vim在搜索和替换表达式中使用变量的内容

vim在搜索和替换表达式中使用变量的内容,vim,Vim,在vimscript中,我定义了如下变量: let b:myvar = 'abc' 现在,我如何将该变量的内容插入到搜索和替换中,例如: :s/123/&myvar/ 试试这句话: :s/123/\=b:myvar/ 肯特的答案对替换零件很有效;对于交互键入替换命令时的常规插入,您可以通过=插入任何表达式(不仅仅是变量、函数等)(这些表达式必须键入为Ctrl+R,而不是字面上的): 您是否只要求替换零件中的变量?或者对于搜索或替换部分中的变量?如果替换b:myvar的变量发生变

在vimscript中,我定义了如下变量:

let b:myvar = 'abc'
现在,我如何将该变量的内容插入到搜索和替换中,例如:

:s/123/&myvar/
试试这句话:

:s/123/\=b:myvar/  

肯特的答案对替换零件很有效;对于交互键入替换命令时的常规插入,您可以通过
=
插入任何表达式(不仅仅是变量、函数等)(这些表达式必须键入为Ctrl+R,而不是字面上的):


您是否只要求替换零件中的变量?或者对于搜索或替换部分中的变量?如果替换
b:myvar
的变量发生变化,这将不起作用,例如,如果它是一个循环变量。@hippietrail:循环必须围绕行,所以这是有效的。唯一的限制是不同的替换,但是你必须使用一个表达式,而不是一个简单的变量,并遵循Kent的答案。好的,我对Vim的这一方面非常陌生,在一个实循环中有一个伪循环(带有递增变量的全局循环)。但我成功了。感谢您的回复。这也可以用于存储大模式,这将在许多映射中使用。所以用户不需要在每个映射中重复他的模式。e、 g.
让b:my\u custom\u pattern='[0-9a-z\u=]\+'
这在模式的主体中似乎不起作用:
:s/\=b:myvar/123/
似乎不起作用。
:substitute/<C-R><C-R>=b:myvar<CR>/replacement/<CR>
:execute 'substitute/' . b:myvar . '/replacement/'