簡體   English   中英

Vim 命令在正常模式下插入空行

[英]Vim command to insert blank line in normal mode

Vim 中是否有任何命令可以與oO執行相同的操作(在當前行之前/之后插入一個空行),但哪個也不會切換到插入模式?

:nnoremap <silent> [<space> :pu! _<cr>:']+1<cr>
:nnoremap <silent> ]<space> :pu _<cr>:'[-1<cr>

解釋:

  • :put將在下面逐行粘貼一個寄存器。 :pu!以上)
  • :pu _將粘貼黑洞寄存器,它是空的,所以我們得到一個空行
  • '[']標記設置在已更改或已刪除的文本的開頭和結尾。
  • :'[會將 cursor 移動到最后更改的起始行(本例中的 put)
  • :'[-1將移動'[但又向上移動一行

如果您更喜歡插件,那么我建議 Tim Pope 的unimpaired.vim 它提供了這些映射,但也需要計數。 該插件還有許多其他不錯的映射。

在插入模式下:

:normal O

來自 vim 內聯手冊:

執行正常模式命令 {commands}。 這使得執行在命令行上鍵入的正常模式命令成為可能。 {commands} 像輸入一樣執行。 對於撤消,所有命令一起撤消。 遇到錯誤時停止執行。 如果給出 [,]。 不會使用映射。 {commands} 應該是一個完整的命令,如果 {commands} 沒有完成一個命令。 最后一個將被中止,就像或被鍵入一樣。

http://vimdoc.sourceforge.net/htmldoc/various.html#:normal

我得到了提示: https://unix.stackexchange.com/a/16452/7914

你可以嘗試這樣的事情:

:map <c-j> o<esc>

這是:當你按下control + j時,它會在下面添加一行(以及 go 到插入模式)然后切換回正常模式,如果你想保持在與之前在最后添加一個k之前相同的行中,一些東西像這樣:

:map <c-j> o<esc>k

我還添加了一個control + k在我站立的那一行之前添加一行

:map <c-k> O<esc>

就像你可以在末尾添加j以保持在同一行之前一樣:

:map <c-k> O<esc>j

如果您需要或想要更高級的東西,您可以查看以下帖子:快速添加和刪除空行在不進入插入模式的情況下插入換行符

dd 在空行上, p 恢復它,然后 p 你想要空行的地方

暫無
暫無

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

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