我经常不得不在vim的新行中粘贴一些东西。我通常要做的是:
o<Esc>p
这将插入新行,并使我进入插入模式,然后退出插入模式,最后进行粘贴。
三个按键。不是很有效。还有更好的主意吗?
我经常不得不在vim的新行中粘贴一些东西。我通常要做的是:
o<Esc>p
这将插入新行,并使我进入插入模式,然后退出插入模式,最后进行粘贴。
三个按键。不是很有效。还有更好的主意吗?
Answers:
不久后,:help p
它说:
:[line]pu[t] [x] Put the text [from register x] after [line] (default
current line). This always works |linewise|, thus
this command can be used to put a yanked block as
new lines.
:[line]pu[t]! [x] Put the text [from register x] before [line]
(default current line).
不幸的是,它不比您当前的解决方案短,除非您按照其他答案中的建议将其与一些键盘映射结合使用。例如,您可以将其映射到任何键(甚至p
):
:nmap p :pu<CR>
:pu[t]
将文本放在当前行之后的新行中,:pu[t]!
将文本放在当前行之前的新行中。我将相应地编辑答案。(万岁:help p
)
:nmap p :pu<CR>
将其放入.vimrc文件中,然后就可以离开了:)
选项:
1)用于拉yy
整整行(包括行尾字符)。 p
然后将当前行之后的行粘贴到新行上,P
(Shift- P)将粘贴到当前行的上方。
2)进行映射:然后只有一两个键:
:nmap ,p o<ESC>p
:nmap <F4> o<ESC>p
3)映射的函数版本(实际上是不必要的,但仅出于完整性考虑):
:nmap <F4> :call append(line('.'), @")<CR>
" This one may be a little better (strip the ending new-line before pasting)
:nmap <F4> :call append(line('.'), substitute(@", '\n$', '', ''))<CR>
:help let-register
:help :call
:help append()
:help line()
:help nmap
它仍然使用三个击键,但我发现它比Esc更容易:
o<Alt-p>
由于您在按o后处于插入模式,因此Alt修饰符将使您可以像以前那样使用命令。
如果要复制整行然后粘贴整行,请首先使用Y
来拉动一行或多行(包括换行符)并p
粘贴。您也可以使用V
,这是视觉线条模式,与普通v
视觉模式相反。
我有映射inoremap jj <ESC>
。所以很容易用ojj
和插入新行Ojj
,然后p
。
因此,ojjp
粘贴新换行符。然后o<esc>p
又有一个中风,但ojjp
对我来说很容易。
如果您也想以插入模式结束,则可以在插入模式下粘贴CTRL-R "
。https://stackoverflow.com/a/2861909/461834
仍然有3次击键,但没有转义,如果您仍然想以插入结束,则可以保存击键。