文章

vim 复制命令行模式下的内容 并重定向当前文件中

有的时候在 vim 中查看一个变量当前值,我想要查看当前 gvim 的字体是什么。:set guifont? 显示当前 gvim 的字体设置,我想要复制保存当前值,但是使用鼠标选中之后也无法直接复制。虽然可以使用一些带有 OCR 功能的工具,但是有的时候也会出现识别错误的情况。有没有什么办法可以将结果保存在寄存器或者直接重定向输出到当前文件中呢,查阅了相关资料有如下办法:

在 Vim 中,可以使用寄存器来捕获和显示命令输出。以下是将命令行模式下的结果复制到剪贴板或者直接在 Vim 编辑文本中显示的几种方法。

将命令输出复制到剪贴板

  1. 使用 :redir 将命令输出重定向到寄存器。
  2. :redir 之后插入命令。
  3. 结束重定向。
  4. 将结果复制到剪贴板。
1
2
3
:redir @+
:set guifont?
:redir END

这将 :set guifont? 命令的输出重定向到 + 寄存器(系统剪贴板)。

将命令输出显示在编辑文本中

  1. 使用 :redir 将命令输出重定向到寄存器。
  2. :redir 之后插入命令。
  3. 结束重定向。
  4. 粘贴寄存器内容到当前缓冲区。
1
2
3
4
:redir @a
:set guifont?
:redir END
:put a

这将 :set guifont? 命令的输出重定向到 a 寄存器,并将其内容插入到当前缓冲区。

使用命令模式插入输出

也可以使用 :execute:put 命令来直接插入命令的输出到编辑文本中:

1
:put =execute('set guifont?')

将命令输出复制到寄存器并插入到文本中

如果你需要将命令输出插入到光标所在位置,可以使用以下命令:

1
2
3
4
:redir @"
:set guifont?
:redir END
:normal! p

这将 :set guifont? 命令的输出重定向到无名寄存器("),并将其粘贴到光标所在位置。

示例

假设你想查看当前的字体并将结果插入到当前编辑的文件中,可以按以下步骤操作:

  1. 打开命令行模式并输入以下命令:

    1
    2
    3
    4
    
    :redir @a
    :set guifont?
    :redir END
    :put a
    

这将 :set guifont? 命令的输出重定向到 a 寄存器,并将其插入到当前缓冲区中。

通过使用 :redir 命令和寄存器,可以轻松地将 Vim 中命令的输出复制到剪贴板或者插入到编辑文本中。这种方法非常灵活,可以用于各种需要捕获和处理命令输出的场景。

本文由作者按照 CC BY 4.0 进行授权

© TheDarkStarJack. 保留部分权利。

[本站总访问量次] [本站访客数人次] [本文总阅读量次]

本站采用 Jekyll 主题 Chirpy