我也想在我的.vimrc
.
let dir=“/home/user/Downloads/”
set path=$dir
nnoremap gr :grep '\b<cword>\b' $dir/*<CR>
上面的代码当然是错误的,但也许你能理解我想要做什么。我想设置为topath
的值,并将第三行中的单词替换为的值。我试过了,失败了,谁能告诉我,任何帮助表示赞赏!dir
/home/user/Downloads/
dir
dir
首先,有花哨的报价;您需要使用普通"
的 ( ) 。除此之外,:let
还可以。
let dir = "/home/user/Downloads/"
你可以用:execute
来评估定义的变量:set
,但它更容易使用:let
,因为它也可以使用特殊符号来更改 Vim 选项&{optionname}
:
let &path = dir
对于映射,如果dir
在运行时不改变,最容易使用:execute
. 注意引用的反斜杠必须如何转义(即加倍):
execute "nnoremap gr :grep '\\b<cword>\\b' " . dir . "/*<CR>"
所有这些信息都是:help eval
. 了解出色而全面的帮助是如何构建的;所有的信息都在那里(你只需要知道如何找到它)!
您必须使用此表示法:
let variable_name = "value"
并使用直引号。
设置路径:
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
每次都重新映射。