如何在文件之间切换?

11
例如,当我从vim中拷贝一些文本,然后使用:wq保存并打开一个新文件时,尝试粘贴刚才拷贝的文本时会失败。那么如何在不同文件之间拷贝文本呢?

我很困惑,不知道问题出在哪里? - FDinoff
4个回答

13

使用"+y将选中的文本复制到剪贴板,使用"+p将其粘贴到新文件中。

例如,如果我有一个名为A的文件,其中包含abcdef,并且我在可视模式下选择了def,然后在正常模式下按下"+y,我刚刚将def复制到了系统剪贴板。现在,我可以打开一个名为B的文件,在正常模式下按下"+p,文本def将被粘贴到文件B中。


请注意,这仅适用于您的 Vim 副本已编译支持剪贴板。不确定?尝试 :echo has('clipboard')。如果返回 1,则表示支持;如果返回 0,则表示不支持。 - ravron
@Riley,你也可以使用:version命令查看,然后看看clipboard前面是否有一个小加号(+)。 - Alexej Magura
当然可以,但我发现阅读那个功能列表有点麻烦。不过这取决于你! - ravron
当我切换到正常模式时,我会失去高亮文本。 - Andres Mejia
FYI,在Ubuntu上,您现在需要安装vim-gtk(20.0)才能获取剪贴板选项。 - Goblinhack

9

在使用:wq写完文件后不要退出编辑器。

相反,使用:w将文件保存并使用:e file编辑新文件。或者使用:sp file拆分屏幕,并使用^W在屏幕之间切换同时编辑两个文件。


3
  • 如果你拥有X11/Windows系统,你可以使用"+y"*y来复制。要粘贴相同的内容,需要使用相同的寄存器。
  • 不要做:wq然后再执行vim newfile的操作。应该在同一个Vim中输入:e newfile。这样你就可以在不同的buffer之间复制和粘贴了,只需要按下yp即可。
  • 如果你使用终端或SSH连接,并且不想采用(2)的方法,你可以将复制的内容保存到文件里,然后在新文件中读取该文件。

我推荐使用第二种方法。


“:e”和“:o”的区别是什么? - OneZero
@OneZero,你尝试过使用:h命令或测试两者吗?打开你的vim,然后按下Q键,现在输入eo,你会看到不同之处。 - Kent

2
Vim可以同时查看多个文件。使用:sp *file_name*“拆分”或:vs *file_name*“垂直拆分”命令在同一终端中查看另一个文件。
打开的文件窗口之间的导航很简单:按下Control键+w,然后按'h'、'j'、'k'或'l'将光标移动到当前窗口左侧、底部、顶部或右侧的文件窗口。只需在一个终端窗口中“yank”您要复制的文本,按照上述方法移动到包含您要复制到的文件的终端窗口,并像通常一样在光标位置上“put”文本。
顺便说一下,您可以使用:wqa命令关闭所有打开的终端窗口并将对打开文件所做的更改写入磁盘。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接