是否可以在不使用 :vs 的情况下复制/粘贴文本?如果我打开了两个 vi 窗口,我可以用鼠标复制/粘贴文本。我怎样才能用键盘做到这一点?
我发现了两个与此类似的现有问题,但都没有回答我的问题。
如何将vi中的代码复制到剪贴板
将内容从一个文件复制并粘贴到VI中的另一个文件
是否可以在不使用 :vs 的情况下复制/粘贴文本?如果我打开了两个 vi 窗口,我可以用鼠标复制/粘贴文本。我怎样才能用键盘做到这一点?
我发现了两个与此类似的现有问题,但都没有回答我的问题。
如何将vi中的代码复制到剪贴板
将内容从一个文件复制并粘贴到VI中的另一个文件
我敢肯定有很多方法,但我使用marks
and来做到这一点registers
。
您可以在文件中的任何位置使用标记,m
后跟要使用的标记的名称。
您可以使用 a 和 z(大写和小写)之间的任何字母来命名您的标记。
您可以使用 键转到包含标记的行'
。
例如,mx
用标记 x标记一行并将 'x
光标移动到包含标记 x的行。
您可以使用反引号键转到标记的确切位置:`
例如,要从当前光标位置拉到包含标记 x 的行,您可以输入y'x
为了使用剪贴板,您需要使用寄存器,它表示您可以存储您拉出的文本的位置。
就像您可以为每个字符使用不同的标记一样,您可以命名要提取文本的寄存器。
"
您在拉/放时使用键来引用寄存器。
例如"ay'x
,将在光标和包含 x 的行之间拉出文本以注册 a。
剪贴板由一个特殊的寄存器表示:*
或者+
取决于您的环境。
要将光标和包含标记 x 的行之间的文本拉到剪贴板,请输入以下内容:"+y'x
这表示:使用缓冲区+
(剪贴板)来存储光标和包含标记 x 的行之间的文本。
完成此操作后,您的文本将在剪贴板中。您可以使用 CONTROL-V 将其粘贴到其他应用程序中。
注意:在某些环境中,剪贴板由名为*
.
这可能听起来势不可挡,但一旦你习惯了它,它就会非常强大。
我每天使用数百次。
如果您正在编辑具有多个关键兴趣点的文件,您可以用不同的标记标记文件的每个部分,并在需要编辑的代码之间快速移动光标。
同样,如果您需要重复复制多段文本,则可以将每段文本存储在不同的寄存器中,以提高粘贴效率。
您可以使用+
寄存器复制/粘贴(阅读更多:访问系统剪贴板)
"+gyy
将拉出一条线,并将其放入+
寄存器中。您可以"+p
在正常模式下或Ctrl+r +
在插入模式下粘贴到其他窗口中。
如果您不想使用拆分窗口,除了使用系统剪贴板之外,真的没有其他方法可以在窗口之间粘贴。
@up 用尽了这个主题。我可以补充一点,大多数与系统组合键相关的组合在 Gvim 的配置中找到你(例如,用于 CTRL+C CTRL+V 等的 Windows 映射在 mswin.vim 中)