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

Vim 如何仅在文件类型的缓冲区中取消映射密钥绑定?,vim,Vim,我有一个映射移动到行尾并插入冒号(在类c语言中很有用)。在我的scheme.vim文件中,我有: iunmap ;; 这方面的问题是: 每次我打开一个方案文件时,它都会尝试运行这个命令,此时它已经没有映射,所以我会得到一个警告 它将全局取消映射此密钥,因此如果我在同一会话中打开非scheme文件,它将不会记住此绑定 至少我想解决#1,只有在绑定处于活动状态时才尝试取消映射,这样我才不会出错。最好让您的映射基于'filetype'的缓冲区本地映射 autocmd FileType c,javas

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

iunmap ;;
这方面的问题是:

  • 每次我打开一个方案文件时,它都会尝试运行这个命令,此时它已经没有映射,所以我会得到一个警告

  • 它将全局取消映射此密钥,因此如果我在同一会话中打开非scheme文件,它将不会记住此绑定


  • 至少我想解决#1,只有在绑定处于活动状态时才尝试取消映射,这样我才不会出错。

    最好让您的
    映射基于
    'filetype'
    的缓冲区本地映射

    autocmd FileType c,javascript inoremap <buffer> ;; <esc>m'A;<esc>``a
    

    您是否尝试过
    iunmap?你是什么意思?这将引发一个错误,因为我没有将任何内容映射到
    键。
    不是键,它是
    :map
    命令系列的一个参数,用于限制映射到当前缓冲区。该参数在ftplugins中用于防止自定义特定于文件类型的映射泄漏到其他文件类型。如果要禁用由ftplugin创建的映射,并且该ftplugin已完全编写,则可以使用该命令。该命令取消映射缓冲区本地映射
    :h :au
    :h :map-local
    :h 'filetype'
    :h FileType