对于我的Haskell程序,我知道路径中的可执行文件名与我当前目录的名称相同。现在我想创建一个这样的映射:
:map <leader>rr :!curdir()<cr>
但是,我所知道的唯一命令是getcwd()
,它给出了整个路径,而不仅仅是目录的名称。
是否有一种简单的方法来只提取目录的名称?
答案 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]