vim:如何用〜/ .vimrc中的值替换变量

时间:2013-01-31 13:41:36

标签: vim grep remap

我想在我的.vimrc中也有类似的内容。

let dir=“/home/user/Downloads/”
set path=$dir
nnoremap gr :grep '\b<cword>\b' $dir/*<CR>

上面的代码当然是错误的,但也许你可以理解我想要做的事情。我想将path设置为dir/home/user/Downloads/的值,并将第三行中的dir替换为dir的值。我尝试过但失败了,任何人都可以告诉我帮助,任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

首先,有花哨的引用;你需要使用普通(")。除此之外,:let还可以。

let dir = "/home/user/Downloads/"

您可以使用:execute来评估:set定义的变量,但更容易使用:let,因为它也可以使用特殊符号{{1来更改Vim选项}}:

&{optionname}

对于映射,如果let &path = dir 在运行时没有更改,则最容易使用dir。注意引用的反斜杠必须如何转义(即加倍):

:execute

所有这些信息都是execute "nnoremap gr :grep '\\b<cword>\\b' " . dir . "/*<CR>" 的一部分。了解优秀和全面的帮助是如何构建的;所有信息都在那里(你只需要知道如何找到它)!

答案 1 :(得分:0)

您必须使用此表示法:

let variable_name = "value"

并使用直引号。

答案 2 :(得分:-1)

设置路径:

set path=/home/user/Downloads/

或将目录附加到路径。

set path+=/home/user/Downloads/

Path是一个Vim变量,如果您只将它用于这一次重新映射,它似乎不适合使用。声明自己的变量会更好,因为路径中也可以有许多目录,这些目录不适用于grep。

let g:search_path="/path/to/your/dir"

nnoremap gr :grep '\<<cword>\>' <C-R>=eval("g:search_path")<CR>

Ctrl + R 让我们在这里插入一个寄存器,然后用它来调用表达式寄存器,我们用它来评估g:search_path

查看:help expr-register了解更多信息!

这将在每次执行映射时评估您的g:search_path变量,允许您更改路径,而不必每次都重新映射gr