簡體   English   中英

Vim:功能 <CR> 退出插入模式,除非在行尾

[英]Vim: Function to make <CR> exit insert mode unless at end of line

當光標(*)在一行內時,如何使<CR>退出插入模式? 喜歡:

" pressing <CR> should exit insert mode (in either case)
Lorem *ipsum dolor
Lorem ipsum dol*or

但是當光標處於EOL時,還要使<CR>插入換行符?

" pressing <CR> when cursor @ EOL
Lorem ipsum dolor*
Fusce leo quam

" results in
Lorem ipsum dolor
*
Fusce leo quam

這個功能同時可以實現這兩個功能是什么樣的?

理由:在維護文檔時,我發現我做了一些小筆畫(即轉到單詞,更改它,退出)。 對我來說,這些筆畫是我想要“輸入”的動作(就像在聊天窗口中發送消息一樣)。 所以有<CR>退出插入允許我在維護時保留這個心理模型。 另一方面, <CR>在作曲時顯然很有用。 幸運的是,有足夠的上下文使兩者同時成為可能 - 我還沒有vimscript技能。 這會教我一些:)

您可以通過表達式映射實現依賴於某些條件的映射; 請參閱:help :map-expression 我們可以通過col()函數檢查行尾的光標,如下所示:

:inoremap <expr> <CR> col('.') == col('$') ? '<CR>' : '<Esc>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM