是否可以在 vim 中为特定文件类型设置热键。
例如,如果我正在编辑.java 文件,我希望当我按下 5 时 vim 运行 javac .java。
这可能吗?
答案1
答案2
(我无法理解此类问题中 SO 和 SU 之间的二分法的意义......无论如何:) 几天后,您的问题已在 SO 上得到解答:ftplugins + 本地映射/缩写/命令是可行的方法。
关于 javac 调用,只需使用 %< 即可获取不带扩展名的文件名。因此,第一个正确的映射变为:
:nnoremap <buffer> <f5> :!javac %<<cr>
但是更喜欢依赖快速修复模式:
:setlocal makeprg=javac\ $*
:nnoremap <buffer> <f5> :make %<<cr>
答案3
我没有使用 Vim 从头开始编写此类内容的直接经验,但这里有您需要查找的示例可供参考。
您可能需要一个用于 .java 文件的文件类型插件 (ftplugin):
文件类型插件类似于全局插件,只不过它只为当前缓冲区设置选项和定义映射。请参阅 |add-filetype-plugin| 了解如何使用此类插件。
并与 mapleader+热键一起使用:
要定义使用“mapleader”变量的映射,可以使用特殊字符串“”。它将替换为“mapleader”的字符串值。如果“mapleader”未设置或为空,则改用反斜杠。... 要定义使用“mapleader”变量的映射,可以使用特殊字符串“”。它将替换为“mapleader”的字符串值。如果“mapleader”未设置或为空,则改用反斜杠。
你可以看看Vim JDE 脚本, 或者本指南配置 Vi(m) 进行 Java 开发。这一页有一些关于在 Vim 中使用 javac 的信息。