我想在我的.vimrc
中也有类似的内容。
let dir=“/home/user/Downloads/”
set path=$dir
nnoremap gr :grep '\b<cword>\b' $dir/*<CR>
上面的代码当然是错误的,但也许你可以理解我想要做的事情。我想将path
设置为dir
到/home/user/Downloads/
的值,并将第三行中的dir
替换为dir
的值。我尝试过但失败了,任何人都可以告诉我帮助,任何帮助表示赞赏!
答案 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
。