Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VIM中,是否可以在不重新键入的情况下使用替换子句中选定的文本?_Vim_Substitution - Fatal编程技术网

在VIM中,是否可以在不重新键入的情况下使用替换子句中选定的文本?

在VIM中,是否可以在不重新键入的情况下使用替换子句中选定的文本?,vim,substitution,Vim,Substitution,假设我在视觉模式下选择了一个单词。我想使用s//对该单词和文件中该单词的所有其他实例执行替换。有没有一种方法可以使用s//stuff/部分中突出显示的文本,而不必重新键入?如果您在使用 CTRL-R/ 在搜索和替换字符串中插入最后一个搜索项 您可以查看此页面了解其他类似技巧: 当然可以。如果您选择了该单词,只需将其“y”对齐,然后键入: :%s/<ctrl-r>"/something else/g :%s/“/something other/g 其中是按ctrl键和r键,以及“只

假设我在视觉模式下选择了一个单词。我想使用s//对该单词和文件中该单词的所有其他实例执行替换。有没有一种方法可以使用
s//stuff/
部分中突出显示的文本,而不必重新键入?

如果您在使用

CTRL-R/

在搜索和替换字符串中插入最后一个搜索项

您可以查看此页面了解其他类似技巧:


当然可以。如果您选择了该单词,只需将其“y”对齐,然后键入:

:%s/<ctrl-r>"/something else/g
:%s/“/something other/g
其中是按ctrl键和r键,以及“只是”字符

所有按键:

y:%s/<ctrl-r>"/what to put/g<enter>
y:%s/“/放什么/g

从命令行访问寄存器内容的另一种方法是通过
@
变量。因此,如果将文本拉入默认寄存器,它将位于名为
@“
的变量中

以下是一个映射,可使此操作易于键入:

vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>

您不必猛拉单词,将光标放在单词上,然后:

:%s/<C-r><C-w>/bar/g

:%s//bar/g
我总是觉得vim命令行无法访问任何寄存器等令人厌烦。我100%同意这一点。这将产生巨大的影响。@inkedmn:你说它无法访问寄存器是什么意思?ctrl-r显然允许你访问复制/粘贴寄存器。@depesz:我不知道-你刚刚度过了我的一天@inkedmn:啊:)很高兴知道。一般来说,如果有什么东西可以让程序员的生活更轻松的话,vim很可能有办法做到这一点。哇,酷!我在vim文档中哪里可以找到这个诀窍?不确定。Ctrl-r是非常有名的东西。太好了!这是我好奇的另一个!
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>
:%s/<C-r><C-w>/bar/g