gvim:在 vimrc 中映射使用当前文件名 (%) 的命令

gvim:在 vimrc 中映射使用当前文件名 (%) 的命令

在 Windows 中的 gVim 中,我想在 vimrc 文件中映射使用当前文件 (%) 的命令。我写了类似这样的内容:

map <F5> !mycommand %

但是,当 gVim 首次加载时,它会运行 vimrc 并提示找不到当前文件,因为尚未打开。我如何在 vimrc 中映射它,但让它仅在我按下 F5 时(打开文件后)解析 % 命令?

谢谢。

答案1

你可以做

map <F5> !mycommand shellescape(expand('%'))<CR>

shellescape()使字符串中的所有特殊字符(例如空格)转义,
expand()在这种情况下扩展字符串为当前文件名。

但是,只有在执行 map 时才应该解析 map。如果您有一个运行的自动命令,则可能会发生这种情况<F5>,或者如果您map在其他地方使用并执行了该命令,则可能会发生这种情况。除非您想要递归映射,否则最好使用 noremap 版本的 map。

相关内容