vim 的自定义快捷键设置

因为 vim 本身功能强大,可以使用很多指令,且可以在执行的同事调用外部命令,因此这让我们自定义工具,操作提供了可能!今天我就以编译 和执行 java 为例,简单说一下vim 如何自定义快捷键

首先是指令
vim 定义快捷键的指令map ,与之相对应的 unmap 是取消已定义的快捷键的指令!
第二步
如果我们要编译 一个名为 Hello.java的文件怎么做呢
Esc 进入命令模式 输入 :!javac Hello.java
: 是指令输入的提示符表示以下输入的是vim 的指令
! 是标明这之后的操作,是编辑器以外的命令
javac Hello.java 就不用说了
但是既然我们要把这个作为快捷键调用的操作使用 ,那么文件名的命名上 必然要具备其通配性,不能太限定话!
这里 我们使用的是 通配符 %
所以整个指令操作过程就是 先按Esc 然后输入 :!javac % 然后回车
接下来 我们就可以定义快捷键了 我定义的是 F12 因此 其指令就是
:map <F12> :!javac %
这样执行下 发现有问题…什么问题…我们一开始如果不在命令模式下 …这个只能执行不了….所以我们得先输入 Esc,但是我们在map 时,只要一按Esc 就退出了输入状态 该怎么办呢 ?答案是使用 <Esc> 字符替代操作,那么指令就变成
:map <F12> <Esc>:!javac %
回车确定过后 按下F12 指令就出现在屏幕上…可是我还是想让他直接执行啊 …既然 <Esc>可以代替 Esc 的操作,那什么可以代替回车操作呢 ? 答案是 <CR> 由此我们整条编译的快捷操作完成了:
:map <F12> <Esc>:!javac %<CR>

接下来是定义执行指令 Ctrl+F12执行:
:map <C-F12> <Esc>:!java %<CR>
看到这里 大家应该已经想到这个问题了,java 执行是不可以带扩展名的 ,更何况当前扩展明是 .java,那么有什么办法 让他不带扩展名呢 ? 答案是 %< ,%<表示的就是不带扩展名的文件名,那么整条执行语句就成了:
:map <C-F12> <Esc>:!java %<<CR>

这样快捷键就可以使用了 … 是不是很方便呢  ?

另附上其他特殊符号:
<Tab> 制表符
<EOL> 行尾
<BS> 退格

你可能感兴趣的:(vim 的自定义快捷键设置)