如何将Vim的当前工作目录插入命令

时间:2018-06-25 14:09:35

标签: vim

我正在尝试创建一个快捷方式,该快捷方式会自动将作用域内的repl连接到我在vim中的当前工作目录。

对于有兴趣的人,用例使用Tim Pope的'figwheel-sidecar.repl-api插件连接到fireplace.vim

这是我的最佳尝试:

nnoremap <leader>cfr :Connect nrepl://localhost:7002 getcwd()<cr>

大多数操作都很简单,但是当前命令的getcwd()段不起作用。我可以用什么代替它,以便每当我按下<leader>cfr时,它都会扩展为:

:Connect nrepl://localhost:7002 path/to/working/directory<cr>

n.b。更好的方法是找到一个可以动态扩展到项目根目录(带有.git文件的最近目录)的命令。

1 个答案:

答案 0 :(得分:0)

使用:execute构建命令,然后将调用该函数 正确地:

nnoremap <leader>cfr :exe 'Connect nrepl://localhost:7002' getcwd()<cr>

要扩展到git根目录,可以使用:

git rev-parse --show-toplevel

因此,只需使用system()而不是getcwd()进行调用。有可能 将trim()括起来以删除换行符是一个好主意:

nnoremap <leader>cfr :Connect nrepl://localhost:7002
                            \ trim(system('git rev-parse --show-toplevel'))<cr>

请注意,trim()是Vim 8+。如果出于某种原因您正在使用 较旧的版本,请改用systemlist()

systemlist('git rev-parse --show-toplevel')[0]