粘贴在vi / vim中后的光标位置


11

vi / vim中一直困扰着我的一件事:

如果我“拉”(又称“复制”)某些文本,然后移至文件中的另一个位置并进行“粘贴”,则光标将停留在刚粘贴的文本的开头。这与大多数现代编辑器不同,后者将光标置于我粘贴的文本的末尾

例如,假设“复制缓冲区”包含单词“ awesome”,我想在短语中的单词“ an”之后粘贴:

This is an editor

在例如gedit中,粘贴后:

This is an awesome editor
                  ^ Cursor is here

vi中

This is an awesome editor
           ^ Cursor is here

在这方面,我可以将vi更改 为像gedit一样吗?


在我的Vim版本列表中,更奇怪的是:如果被拖拽的文本跨过一行,则光标停留在粘贴文本的开头,否则留在粘贴文本的末尾。
Alexey 2013年

抱歉,至少
Alexey 2013年

Answers:


12

在vim中,使用gpgP而不是pP将光标留在粘贴的文本之后。如果要交换绑定,请将以下行放入.vimrc

noremap p gp
noremap P gP
noremap gp p
noremap gP P

奇怪的是,在vim,pP留下一个字符缓冲区中的最后粘贴的文字光标,即使在兼容模式下。

我不知道如何在其他vi版本中更改此设置。


1
我认为在大多数发行版中,“ vi”通常实际上是“ vim”,对吗?
JoelFan 2010年

@JoelFan:也许是大多数非嵌入式Linux发行版。在其他地方,没有。如果您对仅使用vim的解决方案感到满意,请不要将vi引入游戏:99%的vim可配置性不在基本vi中。
吉尔(Gilles)“所以,别再邪恶了”

对“ nvi”感兴趣吗?我对所有不同的vi感到困惑。我主要是对debian和ubuntu
感兴趣

1
@JoelFan:nvi是一个非常基本的vi,它旨在与原始实现兼容,仅此而已。如果您只对可以轻松安装程序的台式机安装或服务器感兴趣,则可以假定vim可用。熟悉较少的vi实施仅对锁定的服务器和嵌入式设备有用。
吉尔(Gilles)“所以,别再邪恶了”,2010年

1
我主要在服务器上使用“ vi”,可以在其中安装东西,是的
JoelFan 2010年

0

我很确定这是设计使然。如果使用“ p”(小写字母P)粘贴,则应该粘贴当前位置或当前行之后。但是,如果使用“ P”(大写P)粘贴,则它将粘贴当前位置或当前行之前。如果您希望将光标放在新粘贴的文本的末尾,请尝试养成使用“ P”而不是“ p”的习惯。

我敢打赌,如果您挖得足够深,您会发现一个vim配方可以放入.vimrc中,即使您使用“ p”,它也总是将光标移至粘贴的末尾。


2
P将光标留在vi中粘贴的文本的开头(至少在nvi中和根据POSIX)。
吉尔(Gilles)“所以,别再邪恶了”,2010年

p和P影响插入物相对于周围文本的位置。它们不会影响游标本身的位置,游标本身的位置始终相对于插入的文本在同一位置。
eMBee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.