vim:如何用〜/ .vimrc中的值替换一个变量
我想在.vimrc
中也有类似的东西。vim:如何用〜/ .vimrc中的值替换一个变量
let dir=“/home/user/Downloads/”
set path=$dir
nnoremap gr :grep '\b<cword>\b' $dir/*<CR>
上面的代码当然是错误的,但也许你可以理解我正在尝试做什么。我想将path
设置为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
一部分。了解卓越和全面的帮助是如何构建的;所有的信息都在那里(你只需要知道如何找到它)!
设置路径:
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
。
我想,问题的关键是如何使用变量'dir'而不是在字符串中指定路径。 –
是的,我有点仓促,我很抱歉。 –
而且你不会在':set'中使用引号。 –
您必须使用这个符号:
let variable_name = "value"
,并使用直引号。
谢谢,但是当我尝试用** vim **替换** grep **命令时,发生错误。 'exe“nnoremap gf:vim/\\ b \\ b /”。 dir。 “/ **/* ”',我很困惑为什么上面的代码是错误的。你能告诉我吗?非常感谢! –
Searene
什么样的错误?请更精确。一个问题是'\ b'在Vim中意味着不同。使用'/ \\ \\> /'。 –
如果我写为你的:'exe“nnoremap gf:vim/\\ \\> /”。 dir。 “/ **/*”',vim说*** E480:没有匹配:\ \> ***,如果我按照我在评论中所说的那样写:'exe“nnoremap gf:vim/\\ b \\ b /“。 dir。 “/ **/* ”',vim说*** E480:不匹配:\ b \ b ***,当前单词是“type.h”(并且光标位于字母'e' ),我可以通过命令“exe”nnoremap gf:vim/type /“找到*** ***类型的单词。 dir。 “/ **/* ”',所以我想也许vim认为要搜索的单词是字符串***“\ b \ b”***,而不是当前单词*** type *** –
Searene