vim - 仅当文件名包含特定字符时才使映射适用

des*_*ukh 2 vim

说,我希望特定的 vim 映射仅在文件名(更好的是,路径)包含特定字符时才适用——与文件类型无关。

这能做到吗?如何?还是我要求太多了?

小智 6

是的,您可以使用 vim 的autocmd命令来做到这一点,方法是在您的.vimrc文件中放入如下内容:

autocmd BufRead,BufNewFile /path/* map <buffer> <c-J> gqip
Run Code Online (Sandbox Code Playgroud)

这将导致map在您开始编辑与模式匹配的新(由于BufNewFile事件)或现有(由于BufRead事件)文件时执行命令。由于模式包含一个/,它将与文件的整个路径匹配,如果没有,它将仅与文件的基本名称匹配。使用该命令的<buffer>参数map将仅将映射应用于当前缓冲区。

您可以使用:help autocmd获取有关定义 autocmds 的其他信息,包括可用事件和受支持模式的详细信息。