如何仅在文件类型的缓冲区中取消映射键绑定?

o_o*_*o-- 3 vim

我有一个映射;;移动到行尾并插入一个冒号(在类似c语言中很有用).在我的scheme.vim档案中,我有:

iunmap ;;
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 每次打开方案文件时它都会尝试运行此命令,此时它已经取消映射,所以我会收到警告.

  2. 它将全局取消映射此键,因此如果我在同一会话中打开非方案文件,它将不记得此绑定.

至少我想解决#1,如果绑定处于活动状态,它只会尝试取消映射,这样我就不会收到错误.

Pet*_*ker 5

最好使您的;;映射成为基于的映射的缓冲区本地映射'filetype'.

autocmd FileType c,javascript inoremap <buffer> ;; <esc>m'A;<esc>``a
Run Code Online (Sandbox Code Playgroud)

您可以根据需要为此映射添加任意数量的文件类型.只需用逗号分隔文件类型.

有关更多帮助请参阅:

:h :au
:h :map-local
:h 'filetype'
:h FileType
Run Code Online (Sandbox Code Playgroud)