【问题标题】:How to copy/paste text from vi to different applications如何将文本从 vi 复制/粘贴到不同的应用程序
【发布时间】:2012-06-03 22:18:51
【问题描述】:

是否可以在不使用 :vs 的情况下复制/粘贴文本?如果我打开了两个 vi 窗口,我可以用鼠标复制/粘贴文本。我怎样才能用键盘做到这一点?

我发现了两个与此类似的现有问题,但都没有回答我的问题。
how to copy codes in vi to clipboard
Copy and paste content from one file to another file in VI

【问题讨论】:

  • 我刚刚写了一本关于如何做到这一点的书,但是您提供的两个链接也都回答了这个问题。

标签: vim vi


【解决方案1】:

@up 用尽了主题。我可以补充一点,大多数与系统组合键相关的组合在 Gvim 的配置中找到你(例如,用于 CTRL+C CTRL+V 等的 Windows 映射在 mswin.vim 中)

【讨论】:

  • 既然已经有很多简单的方法,为什么还要这么痛苦
  • 疼痛?我说的是,所有映射关注的 GUI 系统命令都列在文件中(已注释)。是的,当我没有互联网时,我可以应付;)
【解决方案2】:

我确信有很多方法,但我使用marksregisters 来做到这一点。

标记

您可以使用m 在文件中的任何位置放置标记,后跟要使用的标记名称。

您可以使用 a 和 z(大写和小写)之间的任何字母来命名您的标记。

您可以使用' 键转到包含标记的行。

例如,mxmark x 标记一行,'x 将光标移动到包含 mark x 的行。

您可以使用反引号键转到标记的确切位置:`

要从当前光标位置拉到包含标记 x 的行,例如,您可以输入 y'x

寄存器

为了使用剪贴板,您需要使用寄存器,它们表示您可以存储您拉出的文本的位置。

就像您可以为每个字符使用不同的标记一样,您可以为您提取文本的寄存器命名。

您在拉/放时使用" 键来引用寄存器。

例如"ay'x 将在光标和包含 x 的行之间拉出文本以注册一个

剪贴板由一个特殊寄存器表示:*+,具体取决于您的环境。

要将光标和包含标记 x 的行之间的文本拉到剪贴板,请输入以下内容:"+y'x

这说:使用缓冲区+(剪贴板)来存储光标和包含标记x的行之间的文本。

完成此操作后,您的文本将出现在剪贴板中。您可以使用 CONTROL-V 将其粘贴到其他应用中。

注意:在某些环境中,剪贴板由名为 * 的缓冲区表示。


这听起来可能让人不知所措,但一旦你习惯了它,它就会非常强大。

我每天使用这个数百次。

如果您正在编辑具有多个关键兴趣点的文件,您可以用不同的标记标记文件的每个部分,并在需要编辑的代码之间快速移动光标。

同样,如果您需要重复复制多段文本,则可以将每段文本存储在不同的寄存器中,以提高粘贴效率。

【讨论】:

    【解决方案3】:

    您可以使用+ 寄存器复制/粘贴(阅读更多:Accessing the system clipboard

    "+gyy会抽出一行,并将其放入+寄存器。您可以在正常模式下使用"+p 粘贴到其他窗口,或者在插入模式下使用Ctrl+r + 粘贴。

    如果你不想使用拆分窗口,除了使用系统剪贴板之外,真的没有其他方法可以在窗口之间粘贴。

    【讨论】:

    • 您可以使用 vim 选项卡以及拆分窗口。
    • 还应该注意的是,在 Linux 上有 两个 剪贴板 - 常规剪贴板 - 您使用 CTRL+CCTRL+V 访问的那个 - 映射到 @ 987654329@ 注册。另一个剪贴板存储最后选择的文本,可以通过中键单击粘贴 - 在 Vim 中它映射到 * 寄存器。
    • macvim 使用缓冲区,因此可以复制/粘贴到 textedit。另一方面,控制台 VI 不允许复制/粘贴到 textedit。
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2014-08-03
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多