1

我也想在我的.vimrc.

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

上面的代码当然是错误的,但也许你能理解我想要做什么。我想设置为topath的值,并将第三行中的单词替换为的值。我试过了,失败了,谁能告诉我,任何帮助表示赞赏!dir/home/user/Downloads/dirdir

4

3 回答 3

4

首先,有花哨的报价;您需要使用普通"的 ( ) 。除此之外,: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. 了解出色而全面的帮助是如何构建的;所有的信息都在那里(你只需要知道如何找到它)!

于 2013-01-31T13:53:38.990 回答
0

您必须使用此表示法:

let variable_name = "value"

并使用直引号。

于 2013-01-31T14:02:12.813 回答
-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每次都重新映射。

于 2013-01-31T13:49:51.023 回答