插入换行符而不进入插入模式vim

hel*_*elq 60 vim newline keymapping key-bindings

我希望使用Shift-Enter和在vim中以普通模式插入换行符Ctrl-Enter.我试图从一些解决方案和混合解决方案,Vim的维基-插入新行而不进入插入模式,但Shift-EnterCtrl-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>$
Run Code Online (Sandbox Code Playgroud)

TKr*_*ugg 53

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

  • 您可能还想使用比默认的 1 秒更短的超时值,以便更快地使用普通的 `o` 和 `O` 进入插入模式。我喜欢`set timeoutlen=200`。你只需要足够快地按下双`oo`,这会缩小窗口以执行其他非阻塞超时命令序列。 (4认同)
  • 很好的答案。只是 'o' 工作并进入插入模式。谢谢 (3认同)
  • 另一个增强功能是在向不同缩进级别打开换行符时,使用nmap oo m`o &lt;Esc&gt;``和nmap OO m`O &lt;Esc&gt;``来保留光标位置,如[这些注释](http://vim.wikia.com/wiki/Insert_newline_without_entering_insert_mode)中所述。 (2认同)

Ras*_*sen 12

抽空一行并移位粘贴:

从空行上的光标开始:

yy + (shift + p)
Run Code Online (Sandbox Code Playgroud)

“ yy”拉动该行,“ shift + p”将其插入到下面,而无需进入插入模式。

  • `(shift + y) then p` 作为替代 (2认同)

Ing*_*kat 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),并提出了各种提案.

但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim 8主要版本中使用它.