vim:filetype插件冲突

时间:2014-12-17 04:18:29

标签: vim plugins

我需要同时做python和js程序。

而且,我在〜/ .vim / after / ftplugin /目录下有一些语言特定的节目

在这里,我将向您展示这些文件的内容:

在python.vim中

    set tabstop=4
    set shiftwidth=4
    set expandtab
    set softtabstop=4
    nnoremap Y :Autoformat<CR>

在我的javascript.vim

    nnoremap Y :call JsBeautify()<CR>

想象一下这个风景:

  • 使用vim打开python文件
  • 然后使用:split
  • 在新窗口中打开js文件
  • 现在每当我按 Y
  • 即使我正在编辑python文件
  • ,Vim也会调用JsBeautify

这不是我想要的

现在我想知道是否有办法让vim像这样工作:

  • 判断当前窗口的文件类型
  • 根据〜/ .vim / after / ftplugin /目录中的文件类型获取特定的* .vim文件
  • 然后在上述风景中
  • 我在编辑python文件时会调用Autoformat而在编辑js文件时调用JsBeautify()

1 个答案:

答案 0 :(得分:3)

您必须将选项和映射设置为 local

~/.vim/after/ftplugin/python.vim

setlocal tabstop=4
setlocal shiftwidth=4
setlocal expandtab
setlocal softtabstop=4
nnoremap <buffer> Y :Autoformat<CR>

~/.vim/after/ftplugin/javascript.vim

nnoremap <buffer> Y :call JsBeautify()<CR>

正如FDinoff在他的评论中写道:

:help :setlocal
:help :map-local