【问题标题】:Vim inoremap for specific filetypes特定文件类型的 Vim inoremap
【发布时间】:2012-01-11 18:56:46
【问题描述】:

我在.vimrc 中添加了一些简单的inoremap 命令来帮助完成括号和括号,但我只希望它们适用于php 文件。

 inoremap ( ()<Esc>i
 inoremap { {<CR>}<Esc>ko
 inoremap <? <?php ?><Esc><Left>i

如何将这些命令设置为仅在我编辑 .php 文件时激活?

【问题讨论】:

标签: php vim code-completion


【解决方案1】:

你需要做两件事:

  • 使用inoremap&lt;buffer&gt; 选项创建本地到特定缓冲区的映射。
  • 仅加载特定文件类型的映射。

这可以通过.vimrc 中的自动命令来完成,如下所示:

autocmd FileType php inoremap <buffer> ( ()<Esc>i

另一种方法是创建一个文件类型插件。 (详情请见:h ftplugin

一个简单的例子是创建一个名为 ~/.vim/after/ftplugin/php.vim 的文件,并将您的映射放在里面,如下所示:

inoremap <buffer> ( ()<Esc>i
inoremap <buffer> { {<CR>}<Esc>ko
inoremap <buffer> <? <?php ?><Esc><Left>i

我个人更倾向于使用 ftplugin 方法,但在 .vimrc 文件中包含所有内容可能会很好。

【讨论】:

  • 太好了,只有五分之一的作者知道&lt;buffer&gt;
  • 有趣的是, 选项似乎给了我一个 E488 尾随字符错误
  • @CamelBlues:你能告诉我中断的命令吗?通常,当您有不必要的 : 例如时,您会收到 E488 错误。 autocmd FileType php :inoremap &lt;buffer&gt; ( ()&lt;Esc&gt;i
【解决方案2】:

使用autocmd FileType:

autocmd FileType php,c,java inoremap ( ()<Esc>i

【讨论】:

    【解决方案3】:

    将它们放在这个文件中

    ~/.vim/ftplugin/php.vim
    

    【讨论】:

      【解决方案4】:

      可能有更好的方法,但这应该可行:

      autocmd FileType php call Inoremaps()
      fu! Inoremaps()
         inoremap ...
      endfu
      

      【讨论】:

        【解决方案5】:

        将它们添加到after目录下的ftplugin文件中:

        ~/.vim/after/ftplugin/php.vim
        

        this answer 中的更多信息。

        编辑:默认情况下,该文件,甚至目录,都不会存在。如果你在那里看不到它,你可能不得不去做。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-05
          • 2018-03-10
          • 1970-01-01
          相关资源
          最近更新 更多