簡體   English   中英

Vim:在空行上進入插入模式時智能縮進?

[英]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

請注意, scl的同義詞,因此如果您實際上不是空行,它最終會刪除單個字符而不是縮進。 在那種情況下,你最好使用cc ,就像sml在18個月前提出的那樣。 但是我經常使用這個快捷方式提高我在VimGolf的分數,所以我想提到它。 ;)

暫無
暫無

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

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