vim映射

vim映射,vim,mapping,Vim,Mapping,我正在尝试设置一个vim密钥映射,该映射将映射密钥“;”到A;-i、 我想自动附加“;”到队伍的尽头。但是,我在设置此映射时遇到困难。如果可能的话,我还想将此限制为仅限于java文件。这能做到吗 谢谢映射本身是这样完成的: :map ; A;<esc> :地图;A. 我建议将这一行放在你的.vimrc中并使用它(它不会打扰你,因为映射只在命令模式下工作)。如果您确实必须将此行为限制在某些文件中,则需要查看autocmd功能(:help autocmd)作为快速实现,如何: map

我正在尝试设置一个vim密钥映射,该映射将映射密钥“;”到A;-i、 我想自动附加“;”到队伍的尽头。但是,我在设置此映射时遇到困难。如果可能的话,我还想将此限制为仅限于java文件。这能做到吗


谢谢

映射本身是这样完成的:

:map ; A;<esc>
:地图;A.

我建议将这一行放在你的.vimrc中并使用它(它不会打扰你,因为映射只在命令模式下工作)。如果您确实必须将此行为限制在某些文件中,则需要查看
autocmd
功能(
:help autocmd

作为快速实现,如何:

map ; $a;cntl-vESC
然后按回车键


我将考虑仅为Java文件启用此功能。

如果您想将此功能限制为Java缓冲区,请查看ftplugins。 然后,映射变成:

nnoremap <buffer> ; A;<esc>
nnoremap;A.

顺便说一句,我建议不要在“
”上映射
“因为它是一个非常有用的命令,可能会在其他定义不正确的映射中使用(太多的Vimmer使用
:*map
而不是
:*noremap
)。

如Luc Hermitte所说,使用ftplugins,或者在.vimrc中添加以下内容

autocmd filetype java :nnoremap <buffer> ; A;<esc>
autocmd文件类型java:nnoremap;A.

将其放入~/.vim/after/ftplugin/java.vim

nnoremap <buffer> ; A;<Esc>
nnoremap;A

现在,这个映射应该只在java缓冲区本地进行

+1。使这个答案更好的要点是:映射仅定义为正常模式和“nore”的使用。你是说
:。?映射
'ing on'
'可能会弄乱现有的内置命令?不是内置命令,而是依赖内置
的(非nore)映射(或宏)
移动光标以实现更复杂的操作。