我在vim中有这个映射
map f:Ag --ignore node_modules
我想追加' getcwd()'的结果。在命令的最后。
喜欢(不工作,但提出想法):
map f:Ag --ignore node_modules:call getcwd()
所以vim中的命令看起来像
:Ag --ignore node_modules~ / project
更多背景
我正在使用ag.vim通过vim进行银色搜索。我想要一个普通的模式映射,在ag命令中指定当前的工作目录。
https://github.com/ggreer/the_silver_searcher
https://github.com/rking/ag.vim
谢谢。 JF
答案 0 :(得分:3)
Vim的评估规则与大多数编程语言不同。您需要使用:execute
来评估变量;否则,字面意思;即Vim使用变量名称本身作为参数。
nnoremap f :execute 'Ag blahblah ' . getcwd()<CR>
这是@ Kent使用<expr>
的替代方法。
PS:You should use :noremap
;它使映射不受重映射和递归的影响。
答案 1 :(得分:2)
尝试:
nnoremap <expr> f ':Ag blahblah '. getcwd()
如果您不提供目录,ag
将获取当前目录,与getcwd()
相同吗?
答案 2 :(得分:0)
另一种方法是通过<c-r>=
使用表达式寄存器来执行表达式getcwd()
nnoremap <leader>f :Ag blahblah <c-r>=getcwd()<cr><c-b><s-right><s-right>><space>''<left>
我在<cr>
之后添加了部分,以便在blahblah
之后插入单引号,并将光标放在它们之间。
注意:不要掩盖f
命令。这非常方便。见:h f
。调查使用领导者。见:h mapleader
如需更多帮助,请参阅:
:h c_ctrl-r
:h "=
:h c_ctrl-b
:h c_<s-right>