我如何在vimscript中完成以下功能?
fun! Foo()
let l:bar = "Hello there, world!"
# Perform a substitution on l:bar, changing "world" to "kitten"
endfun
Run Code Online (Sandbox Code Playgroud)
也就是说,如何对变量而不是当前缓冲区执行替换.
我知道为了替换缓冲区,我可以写
silent :%s/world/kitten/g
Run Code Online (Sandbox Code Playgroud)
但是替换变量的等效命令是什么?
Xav*_* T. 47
见:help substitute的:help substitute().
它是替代命令的对应物(见:help :substitute).
substitute({expr}, {pat}, {sub}, {flags}) *substitute()*
The result is a String, which is a copy of {expr}, in which
the first match of {pat} is replaced with {sub}. This works
like the ":substitute" command (without any flags). But the
matching with {pat} is always done like the 'magic' option is
set and 'cpoptions' is empty (to make scripts portable).
'ignorecase' is still relevant. 'smartcase' is not used.
See |string-match| for how {pat} is used.
And a "~" in {sub} is not replaced with the previous {sub}.
Note that some codes in {sub} have a special meaning
|sub-replace-special|. For example, to replace something with
"\n" (two characters), use "\\\\n" or '\\n'.
When {pat} does not match in {expr}, {expr} is returned
unmodified.
When {flags} is "g", all matches of {pat} in {expr} are
replaced. Otherwise {flags} should be "".
Example: >
:let &path = substitute(&path, ",\\=[^,]*$", "", "")
This removes the last component of the 'path' option.
:echo substitute("testing", ".*", "\\U\\0", "")
results in "TESTING".
Run Code Online (Sandbox Code Playgroud)
在你的例子中,我想这
let l:bar = substitute(l:bar, "world", "kitten", "")应该工作
| 归档时间: |
|
| 查看次数: |
16699 次 |
| 最近记录: |