[英]Vim: Smart indent when entering insert mode on blank line?
當我打開一個新行(通過'o')時,我的光標跳到下一行的正確縮進位置。 另一方面,當光標位於空行時進入插入模式不會將光標移動到正確縮進的位置。
在空行上進入插入模式(通過i)時,如何使vim正確縮進光標?
cc
將替換當前行的內容並在正確的縮進處進入插入模式 - 因此在空行上將完全按照您的要求進行操作。
我認為,行為i
你的描述是正確的,因為有您想要在特定位置上的空白行插入,而不是跳躍到哪里VIM猜測要插入許多用例。
那實際上並沒有我想象的那么糟糕。 實現此目的的一種方法是將以下內容添加到〜/ .vimrc中
"smart indent when entering insert mode with i on empty lines
function! IndentWithI()
if len(getline('.')) == 0
return "\"_ccO"
else
return "i"
endif
endfunction
nnoremap <expr> i IndentWithI()
當您從插入模式點擊“i”時,它只會檢查空行。 如果你確實是一個空行,它將刪除它並打開一個新行,有效地利用工作的“開放行”行為。
注意:“_在cc之前確保您的注冊表沒有被刪除
在空行上,要正確縮進進入插入模式,您只需使用s
。
請注意, s
是cl
的同義詞,因此如果您實際上不是空行,它最終會刪除單個字符而不是縮進。 在那種情況下,你最好使用cc
,就像sml在18個月前提出的那樣。 但是我經常使用這個快捷方式提高我在VimGolf的分數,所以我想提到它。 ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.