vim - 在 Vim 命令中使用当前目录

标签 vim

对于我的 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/

相关文章:

git - GnuTLS接收错误(-110): The TLS connection was non-properly terminated

vim - 在 Vim 中导航一系列文件

php - 我如何配置 Vim 以对 D 注释也使用 PHP 样式自动完成?

ruby-on-rails - Vim E854 : path too long for completion

haskell - Vim:在与光标相同的列中开始插入新行

javascript - 在 Vim 中,如何防止 HTML 标签的自动缩进,但保留 Javascript 的部分?

vim - 使用 ctrl+shift+arrow 在 VIM 中选择单词

vim - Vim 中的拆分窗口

python - gVim 和多种编程语言

python - 无法在带有 Ubuntu 的 Python 中使用标准输入