在vim中,在行尾粘贴文本,文本之间留有空格

在vim中,在行尾粘贴文本,文本之间留有空格,vim,Vim,我正试图找到一种最快的方式将文本粘贴到行尾,但在上一个下线和新文本之间留有一个空格。当前的方法是a p或opkJ。有没有其他更快的方法来实现这一点?我在想“用偏移量粘贴”之类的东西 试试这个: :map 1 A your text to append. 然后按“1”键 这将把“1”键映射为命令“a”(附加到当前行的末尾)的快捷方式。这是一个基于Mark答案的映射,但似乎更符合您的要求: :nnoremap 1 A <esc>p :nnoremap 1 A p 您可以选择任何键或

我正试图找到一种最快的方式将文本粘贴到行尾,但在上一个下线和新文本之间留有一个空格。当前的方法是
a p
opkJ
。有没有其他更快的方法来实现这一点?我在想“用偏移量粘贴”之类的东西

试试这个:

:map 1 A your text to append.
然后按“1”键


这将把“1”键映射为命令“a”(附加到当前行的末尾)的快捷方式。

这是一个基于Mark答案的映射,但似乎更符合您的要求:

:nnoremap 1 A <esc>p
:nnoremap 1 A p

您可以选择任何键或组合而不是
1

如果不想使用映射,可以键入Aspacectrl+r”

有关更多信息,请参见
:hi\u ctrl-r
。发生的情况如下:

A        Append text to end of line (enters insert mode).
space  - Actual space key to insert a space.
ctrl+r - Insert contents of a register.
"      - Default register of yank and paste.

如果您启用
mswin
行为,
Ctrl-v
粘贴文本。因此,按键顺序将从命令模式,
A
进入行尾插入模式,
插入空格,然后
Ctrl-v
粘贴

或者,在插入模式下,使用鼠标将光标放在一行的末尾,
然后
Ctrl-v

但是,
Ctrl-v
访问系统剪贴板,因此您必须将yank操作复制到系统剪贴板,在Windows上这是
:set clipboard=unnamed

将其粘贴到
.vimrc

" enable Windows-style key bindings
source $VIMRUNTIME/mswin.vim
behave mswin

" yank to system clipboard
set clipboard=unnamed

不幸的是,我认为这种方法比我在问题中提到的
a p
方法需要更多的击键次数。只有第一次。然后每行一次。好的,这可能有用,但只有当你想多次粘贴相同的文本时。我想你想做很多次,否则你肯定不会担心花了多长时间我提出这个问题的主要原因是为了减少这样一个操作的时间,主要是粘贴不重复的文本。这个解决方案很有帮助,但我不确定创建宏是否更容易-结果是一样的,你不必映射关键点,你可以重复宏而不必移动到每一行。这个解决方案肯定更有效universal,如果没有键映射,可能无法实现我想要的。@Sebastian我不明白你为什么要避免键映射。它们可能是vim令人敬畏的主要部分。我相信,如果没有另一个键映射,我想要的是可以实现的,有太多的键映射需要记住,我想避免冗余。@Sebastian你是不应该记住您所做的所有键映射(与标准vim命令相反),应该只做一次(以您能想到的最自然的方式),将它们保存在您的
vimrc
中,从那时起,只需使用它们即可。例如,您可以轻松地为
$p
序列设置此命令。我的意思是记住另一个组合键,显然我不会每次运行vim时都映射我自己的映射;]谢谢您的回答。这使用了完全相同的击键量作为
一个p
,但让我们处于插入模式。+1用于启动ctrl+r-这种组合非常有用。我想我还是坚持使用键映射。谢谢!
" enable Windows-style key bindings
source $VIMRUNTIME/mswin.vim
behave mswin

" yank to system clipboard
set clipboard=unnamed