gpt4 book ai didi

vim - 如何在 Vim 中将所有 hlsearch 文本复制到剪贴板

转载 作者:行者123 更新时间:2023-12-02 08:54:13 25 4
gpt4 key购买 nike

文件.txt

abc123
456efg
hi789j

命令

:set hlsearch
/\d\+

我想将下面突出显示的文本复制到剪贴板(或注册):

123
456
789

就像

egrep -o '[0-9]+' file.txt

谢谢。

最佳答案

可以按照以下步骤操作。

  1. 清空寄存器(例如,"a)。

    qaq

    :let @a = ''
  2. 运行命令1

    :g/\d\+/norm!//e^Mv??^M"Ay

    如果需要在每个字符后面追加一个换行符匹配,则运行此命令:2

    :g/\d\+/norm!//e^Ma^M^[??^Mv$"Ayu

    输入 ^M 作为 Ctrl+V 然后 Enter (或Ctrl+M),输入 ^[ 作为Ctrl+V 然后 Esc (或Ctrl+[)。为了不重新输入模式刚刚在搜索中使用过的,可以按Ctrl+R/ 自动插入最后的搜索模式。

    还可以记录在匹配行上执行的命令(部分遵循规范!)作为宏。这允许查看操作立即在 sample 线上进行测试并确保它们是正确的。然后,可以使用 :global 应用宏:

    :g/\d\+/norm!@z

1 在顶层,该命令是执行 Ex 的 :global在与模式匹配的每行上命令 norm!//e^Mv??^M"Ay\d\+。 Ex命令以norm!命令开始,执行Normal模式命令//e^Mv??^M"Ay。这是由回车符^M。第一个 //e 查找搜索模式(设置为全局命令中使用的模式)并将光标指向匹配的最后一个符号(由于标志 e,请参阅 :help
搜索偏移量
)。然后v命令启动可视模式。命令 ?? 看起来对于最后一个搜索模式向后(并将光标放在第一个匹配的字符),从而选择与上次搜索匹配的文本图案。最后一个命令,"Ay,将选定的文本拉出并将其附加到a 注册。

2 第二个全局命令类似于第一个全局命令。在每个匹配行,它将光标移动到匹配的最后一个符号并在该符号后插入换行符。然后它将光标置于开头匹配并选择(在可视模式下)直到行尾的所有内容(包括刚刚插入的换行符)。最后,该命令附加所选的文本到寄存器,并撤消换行符插入。

3 人们总是可以通过以下方式查看特定宏中记录的操作:使用 :di z"zp 检查相应寄存器的内容,例如。

关于vim - 如何在 Vim 中将所有 hlsearch 文本复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6176659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com