78

Shift-Enter我想在 vim 中使用and以正常模式插入换行符Ctrl-Enter。我尝试了一些来自Vim Wikia 的解决方案和混合解决方案 - 在不进入插入模式的情况下插入换行符,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>$
4

7 回答 7

72

我的替代方法是使用oo(resp. OO) 通过此映射在 (resp. over) 电流下插入一个新行: nmap oo o<Esc>k (resp. nmap OO O<Esc>j)

于 2013-04-21T20:57:20.147 回答
20

拉出一个空行并移位粘贴:

从空行上的光标开始:

yy + (shift + p)

"yy" 拉出该行,然后 "shift + p" 将其插入下面,而不进入插入模式。

于 2018-04-10T10:44:38.573 回答
9

由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的。(不过,这种特殊情况应该可以在 GVIM 中使用。)某些组合键,如Ctrl+non-alphabetic无法映射,并且Ctrl+letterCtrl+ Shift+letter无法区分。(除非您的终端为它发送一个不同的termcap代码,而大多数人不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于<Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/<C-[>等。(唯一的例外是<BS>/<C-H>.) 这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。

一些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim),并提出了各种建议

但是截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有它。

于 2013-04-21T18:40:56.077 回答
2

这就是我使用的:

nmap <CR> :a<CR><CR>.<CR>

我试过nmap <CR> o<Esc>了,但它在切换到插入模式并返回时使 UI 出现故障。

于 2014-02-02T12:52:26.173 回答
2

如果您只是不想按 ESC 怎么办

yypd$
于 2019-10-25T02:20:15.097 回答
1

我使用 :s/\n/\r\r/g (用两个换行符替换换行符,与“o”相同)。

于 2013-10-10T04:17:01.883 回答
-3

您可以使用 hack 来执行此操作。

在编辑模式下,您可以使用p粘贴当前剪贴板。由于o添加了换行符,您可以使用o<ESC>ddp在光标下方添加新行;从那里开始,p将添加一个新行,直到您删除其他内容。

于 2016-07-29T16:47:27.077 回答