Vim 如何在普通映射命令中追加函数的输出

Vim 如何在普通映射命令中追加函数的输出,vim,ag,Vim,Ag,我在vim中有这个映射 映射f:Ag——忽略节点_模块 我想在命令末尾附加“getcwd()”的结果 类似(不起作用,但给出了想法): 映射f:Ag——忽略节点_模块:调用getcwd() 所以vim中的命令看起来像 :Ag--忽略节点\模块~/project 更多上下文 我正在使用ag.vim通过vim进行银搜索。我想要一个普通模式映射,在ag命令中指定当前工作目录 多谢各位。 JF试试: nnoremap <expr> f ':Ag blahblah '. getcwd()

我在vim中有这个映射

映射f:Ag——忽略节点_模块

我想在命令末尾附加“getcwd()”的结果

类似(不起作用,但给出了想法):

映射f:Ag——忽略节点_模块:调用getcwd()

所以vim中的命令看起来像

:Ag--忽略节点\模块~/project

更多上下文

我正在使用ag.vim通过vim进行银搜索。我想要一个普通模式映射,在ag命令中指定当前工作目录

多谢各位。 JF

试试:

nnoremap <expr> f ':Ag blahblah '. getcwd()
nnoremap f':agblahblah'。getcwd()
如果不提供目录,
ag
将获取当前目录,与
getcwd()
相同,对吗?

尝试:

nnoremap <expr> f ':Ag blahblah '. getcwd()
nnoremap f':agblahblah'。getcwd()

如果不提供目录,
ag
将采用当前目录,与
getcwd()
相同,对吗?

Vim的求值规则与大多数编程语言不同。您需要使用
:执行
,以计算变量;否则,它是字面意义上的;i、 Vim使用变量名本身作为参数

nnoremap f :execute 'Ag blahblah ' . getcwd()<CR>
nnoremap f:执行'Ag blahblah'。getcwd()
这是@Kent使用
的替代方法


PS:;它使映射不受重新映射和递归的影响。

Vim的求值规则与大多数编程语言不同。您需要使用
:执行
,以计算变量;否则,它是字面意义上的;i、 Vim使用变量名本身作为参数

nnoremap f :execute 'Ag blahblah ' . getcwd()<CR>
nnoremap f:执行'Ag blahblah'。getcwd()
这是@Kent使用
的替代方法


PS:;它使映射不受重新映射和递归的影响。

另一种方法是通过
=
使用表达式寄存器执行表达式,
getcwd()


另一种方法是通过
=
使用表达式寄存器执行表达式,
getcwd()


嗨,命令不起作用。我一直收到“E78:未知标记”。对于您对目录的评论,文档中说“{directory}(默认为当前目录)”。由于我经常使用NERDTree更改cwd,因此我希望查看我当前所在的目录,以尽量减少我工作时的人为错误。:)谢谢你的帮助。你确定你在地图中添加了expr吗?早上我又试了一次,它成功了!我以前一定犯过错误。谢谢。嗨,命令不起作用。我一直收到“E78:未知标记”。对于您对目录的评论,文档中说“{directory}(默认为当前目录)”。由于我经常使用NERDTree更改cwd,因此我希望查看我当前所在的目录,以尽量减少我工作时的人为错误。:)谢谢你的帮助。你确定你在地图中添加了expr吗?早上我又试了一次,它成功了!我以前一定犯过错误。谢谢,谢谢你的回答。您在表达式寄存器中使用了一种有趣的方法。我不知道那件事。谢谢分享。另外,我向您保证,我的映射看起来是这样的:nnoremap f':Ag——忽略节点_模块——忽略资产-S”“”.getcwd()。“'和nnoremap fw':Ag——忽略节点_模块——忽略资产-S”“”.getcwd()。“'为了简单起见,我没有在原始帖子中显示完整的映射。我基本上和你在做同样的事情。:)谢谢你的回答。您在表达式寄存器中使用了一种有趣的方法。我不知道那件事。谢谢分享。另外,我向您保证,我的映射看起来是这样的:nnoremap f':Ag——忽略节点_模块——忽略资产-S”“”.getcwd()。“'和nnoremap fw':Ag——忽略节点_模块——忽略资产-S”“”.getcwd()。“'为了简单起见,我没有在原始帖子中显示完整的映射。我基本上和你在做同样的事情。:)