Vim打开当前文件夹中的unite

Vim打开当前文件夹中的unite,vim,vim-plugin,unite.vim,Vim,Vim Plugin,Unite.vim,我得到了以下热键映射: nnoremap f Unite file-path=~/Workspace 这很好,但是,我想使它的路径等于我所在的当前文件夹(它将与工作目录分开) 有人知道我该怎么做吗S您可以在不需要文件名的地方使用expand()函数来使用%:p:h(这些扩展用于文件名参数,而不是像您的命令那样的其他扩展) 但你不能直接映射它。这是一个需要“动态”生成的命令,因此您可以使用:execute生成并执行计算表达式: nnoremap <leader>f :exec "Uni

我得到了以下热键映射:

nnoremap f Unite file-path=~/Workspace

这很好,但是,我想使它的路径等于我所在的当前文件夹(它将与工作目录分开)


有人知道我该怎么做吗S

您可以在不需要文件名的地方使用
expand()
函数来使用
%:p:h
(这些扩展用于文件名参数,而不是像您的命令那样的其他扩展)

但你不能直接映射它。这是一个需要“动态”生成的命令,因此您可以使用
:execute
生成并执行计算表达式:

nnoremap <leader>f :exec "Unite file -path=" . expand('%:p:h')
nnoremap f:exec“Unite file-path=”。展开('%:p:h')
如何使用:

:UniteWithBufferDir file 


(取决于您的需要)

Unite允许使用
反勾选
进行动态参数,如Unite帮助文档中所述:

You don't have to use |:execute| for dynamic arguments.
You can use evaluation cmdline by ``.
Note: In the evaluation, The special characters(spaces,  "\" and ":")
are escaped automatically.
>
    :Unite -buffer-name=search%`bufnr('%')` line:forward:wrap<CR>
动态参数不必使用|:execute。
您可以通过“`”使用评估cmdline。
注:在计算中,特殊字符(空格“\”和“:”)
自动转义。
>
:Unite-buffer name=search%`bufnr('%')`line:forward:wrap
因此,在您的情况下,映射将是:

:nnoremap <leader>f :Unite file -path=`expand('%:p:h')`
:nnoremap f:Unite file-path=`expand('%:p:h')`

您尝试过当前文件夹的%:p:h吗?我尝试过,它似乎将
-path=
之后的所有内容都视为一个字符串。@Robinhegglundhansen我注意到了一些事情:(1)在
Unite
的开头不需要
?(2) 如果地图末尾没有
,则必须手动按enter键。“这是你想要的行为吗?”西迪尔说得对,但我把它们留给了布雷维蒂。我对Unite一点也不了解,于是给出了一个笼统的答案。但这似乎是正确的解决方案!回答也很好,我正在考虑删除我的答案,因为它清楚地显示了一个不合适的解决方案。well@sidyll,你的答案就是让我查找文档的答案。所以你对我的回答做出了贡献:-谢谢…我保留着它,并给发问者加了一个便条:-)@sidyll不要删除它。这是一个很好的答案,我可以在unite之外使用:)⚠️ @ Robinhegglundhansen请检查其他答案以获得更合适的解决方案,我将保留我的答案,因为它是“Vim通用”,以防您或未来的观众需要了解这项技术。
You don't have to use |:execute| for dynamic arguments.
You can use evaluation cmdline by ``.
Note: In the evaluation, The special characters(spaces,  "\" and ":")
are escaped automatically.
>
    :Unite -buffer-name=search%`bufnr('%')` line:forward:wrap<CR>
:nnoremap <leader>f :Unite file -path=`expand('%:p:h')`