8

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

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

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

有没有一种简单的方法可以只提取目录的名称?

4

2 回答 2

14

利用

fnamemodify(getcwd(), ':t')

或者

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

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

要将其移动到您的映射中,请使用

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

. 有关为什么您永远不应该使用的说明,:map请参见此处

于 2012-12-18T19:59:55.533 回答
0

你可以使用类似的东西:

split(getcwd(), "/")[-1]
于 2012-12-18T16:54:42.453 回答