从vim中的'iskeyword'中删除一个字符

时间:2012-02-10 21:41:53

标签: vim

在我的vimrc中,我已经包含了一个脚本(例如,otherscript.vim,我需要将其包含在工作中),其中包含:

autocmd FileType php setlocal iskeyword+=$

我不想要这种行为。所以,稍后在vimrc中,我会说:

autocmd FileType php setlocal iskeyword-=$

(我也尝试使用set代替setlocal。)但是,当我打开一个php文件时,iskeyword仍然包含$符号。我正在使用vim 7.2。 ':verbose set iskeyword'的输出是

iskeyword=@,48-57,_,192-255,$
    Last set from /path/to/otherscript.vim

':scriptnames'的输出是:

...
7: /usr/share/vim/vim72/ftplugin.vim
8: /home/yogeshwer/.vimrc
...
74: /path/to/otherscript.vim
... 

有人可以帮助我如何将其他脚本所做的更改恢复为'iskeyword'吗?谢谢一堆。

1 个答案:

答案 0 :(得分:6)

我喜欢在可以使用after目录结构时避免使用autocmds。

$ mkdir -p ~/.vim/after/{ftplugin,syntax,indent}
$ echo 'setlocal iskeyword-=$' >> ~/.vim/after/ftplugin/php.vim

这会在用户特定的vim config文件夹中设置一个基本的after目录。虽然~/.vim/ftplugin/$FILETYPE.vim将用于代替vim的标准$ FILETYPE.vim文件,但after目录中的文件将被执行,允许您覆盖或更改ftplugins的行为,语法定义和缩进命令。

作为向您展示这些工作原理的另一个示例,我将在此处包含部分本地after/syntax/python.vim文件。我喜欢我的代码的所有“结构标点符号”,以便在我阅读时脱颖而出,所以我这样做:

syn match pythonParen /[()]/
syn match pythonBrack /[][]/
syn match pythonCurly /[{}]/
hi def link pythonParen Paren
hi def link pythonBrack Brack
hi def link pythonCurly Curly

我还有一个after/indent/php.vim文件应该可以解决我在模板文件中切换进出<?php ?>区域时遇到的缩进行为时遇到的一些烦人的缩进问题,但代码是一团糟,从来没有真正起作用,所以我不会在这里重现它。我提到它只是为了给你一个关于挂钩后可以做些什么的例子。