特定文件的 Vim 热键

特定文件的 Vim 热键

是否可以在 vim 中为特定文件类型设置热键。

例如,如果我正在编辑.java 文件,我希望当我按下 5 时 vim 运行 javac .java。

这可能吗?

答案1

的〜/ .vimrc

autocmd FileType java map <F5> :! javac %<cr>

有关更多信息键映射外部命令

答案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 的信息。

相关内容