在 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。