我希望使用 Shift-Enter 和 Ctrl-Enter 在vim中以普通模式插入换行符。我尝试了一些解决方案并混合Vim Wikia - Insert newline without entering insert mode的解决方案,但 Shift-Enter 和 Ctrl-Enter 没有响应:
" put a new line before or after to this line
nnoremap <S-CR> m`o<Esc>``
nnoremap <C-CR> m`O<Esc>``
" reverse J command
nnoremap <C-J> vaW<Esc>Bi<CR><Esc>k:s/\s\+$//<CR>$
答案 0 :(得分:50)
我的替代方法是使用oo
(resp。OO
)在此映射下的当前(resp.over)下插入一个新行:
nmap oo o<Esc>k
(分别为nmap OO O<Esc>j
)
答案 1 :(得分:8)
由于内部处理键盘输入的方式,遗憾的是今天通常不可能。 (但这种特殊情况应该适用于GVIM。)某些组合键,如 Ctrl + 非字母无法映射, Ctrl +无法区分字母与 Ctrl + Shift + 字母。 (除非您的终端为其发送不同的 termcap 代码,但大多数代码都没有。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则无法使用该组合键。这也适用于<Tab>
/ <C-I>
,<CR>
/ <C-M>
/ <Esc>
/ <C-[>
等。(只有<BS>
例外/ <C-H>
。)这是一个众所周知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。
有些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持Vim的终端中的控制台Vim),并且已经浮出various proposals。
但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim 8主要版本中有这个。
答案 2 :(得分:5)
划出一条空行并转移粘贴它:
从空行开始:
yy + (shift + p)
“yy”拉线,“shift + p”将其插入下方,无需进入插入模式。
答案 3 :(得分:1)
我使用:s / \ n / \ r \ n \ r \ n(用两个换行符替换换行符,与“o”相同。)
答案 4 :(得分:1)
这就是我使用的:
nmap <CR> :a<CR><CR>.<CR>
我尝试了nmap <CR> o<Esc>
,但是当它切换到插入模式并返回时,它使UI出现了问题。
答案 5 :(得分:0)
如果您不想按ESC怎么办
yypd$
答案 6 :(得分:-2)
您可以使用黑客来执行此操作。
在编辑模式下,您可以使用p
粘贴当前剪贴板。由于o
添加换行符,您可以使用o<ESC>ddp
在光标下添加新行;从那里开始,p
将添加一个新行,直到您删除其他内容。