使用Vim命令中的当前目录

时间:2012-12-18 15:43:46

标签: vim

对于我的Haskell程序,我知道路径中的可执行文件名与我当前目录的名称相同。现在我想创建一个这样的映射:

:map <leader>rr :!curdir()<cr>

但是,我所知道的唯一命令是getcwd(),它给出了整个路径,而不仅仅是目录的名称。

是否有一种简单的方法来只提取目录的名称?

2 个答案:

答案 0 :(得分:14)

使用

fnamemodify(getcwd(), ':t')

fnamemodify('.', ':p:h:t')

。第二种情况下:h是必要的,因为:p会发出尾随路径分隔符(因此:t选择的最后一个路径组件现在是空字符串)。

要将其移至您的地图使用

:noremap \rr :!<C-r>=shellescape(fnamemodify('.', ':p:h:t'), 1)<CR><CR>

。有关您不应该使用:map的原因的说明,请参阅here

答案 1 :(得分:0)

您可以使用以下内容:

split(getcwd(), "/")[-1]