gpt4 book ai didi

vim - 用粘贴缓冲区的内容替换单词?

转载 作者:行者123 更新时间:2023-12-03 04:41:54 28 4
gpt4 key购买 nike

我需要在文件中进行一堆单词替换,并希望使用 vi 命令来完成,而不是使用 EX 命令,例如 :%s///g .

我知道这是替换当前光标位置处的单词的典型方式:cw<text><esc>但是有没有办法用未命名寄存器的内容作为替换文本而不覆盖寄存器来做到这一点?

最佳答案

我认为“粘贴”是指未命名的(复制/放置/更改/删除/替换)寄存器,对吧? (因为这是会被更改命令覆盖的命令。)

寄存器通常通过键入 " 然后输入寄存器的名称(单个字符)来指定,例如 "ay 然后 "ap 进行拉取放入寄存器 a 中,然后将寄存器 a 的内容放入其中。更改命令也是如此。在这种情况下,如果您不希望通过更改删除文本命令去任何地方,你可以使用黑洞寄存器 "_: "_cw。然后一旦进入插入模式,你可以按 ctrl-R 后跟你想要的寄存器(可能是")放入该寄存器的内容。

  • "* - 选择寄存器(中键粘贴)
  • "+ - 剪贴板寄存器(也可能通过终端使用 ctrl-shift-v 进行访问)
  • "" - vim 默认(未命名)的 yank/put/change/delete/substitute 寄存器。

简短回答:“_cw^R”

编辑:正如其他人所建议的,您当然可以使用不同的寄存器来进行将文本放入默认寄存器的复制(或其他操作)。不过,您并不总是首先想到这一点,因此最好执行单个更改命令而不会将其破坏。虽然还没有完全被吹走。有编号的寄存器 "0"9:

Vim fills these registers with text from yank and delete commands.

Numbered register 0 contains the text from the most recent yank command, unless the command specified another register with ["x].

Numbered register 1 contains the text deleted by the most recent delete or change command, unless the command specified another register or the text is less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: %, (, ), `, /, ?, n, N, { and }. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line.

With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previouscontents of register 9.

关于vim - 用粘贴缓冲区的内容替换单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2471175/

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