对于我的 Haskell 程序,我知道路径中的可执行文件的名称与我当前目录的名称相同。现在我想像这样创建一个映射:
:map <leader>rr :!curdir()<cr>
但是,我知道的唯一命令是
getcwd()
,它为我提供了整个路径,而不仅仅是目录的名称。有没有一种简单的方法可以只提取目录的名称?
最佳答案
用
fnamemodify(getcwd(), ':t')
或者
fnamemodify('.', ':p:h:t')
.
:h
在第二种情况下是必要的,因为 :p
发出尾随路径分隔符(因此 :t
选择的最后一个路径组件现在是空字符串)。要将其移动到您的映射中,请使用
:noremap \rr :!<C-r>=shellescape(fnamemodify('.', ':p:h:t'), 1)<CR><CR>
.关于为什么不应该使用
:map
的描述见 here .
关于vim - 在 Vim 命令中使用当前目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936480/