在我的vimrc中,我已经包含了一个脚本(例如,otherscript.vim,我需要包括出于工作原因),它说:
autocmd FileType php setlocal iskeyword+=$
Run Code Online (Sandbox Code Playgroud)
我不想要这种行为.所以,稍后在vimrc中,我说:
autocmd FileType php setlocal iskeyword-=$
Run Code Online (Sandbox Code Playgroud)
(我也尝试使用set而不是setlocal.)但是,当我打开一个php文件时,iskeyword仍然包含$符号.我正在使用vim 7.2.':verbose set iskeyword'的输出是
iskeyword=@,48-57,_,192-255,$
Last set from /path/to/otherscript.vim
Run Code Online (Sandbox Code Playgroud)
':scriptnames'的输出是:
...
7: /usr/share/vim/vim72/ftplugin.vim
8: /home/yogeshwer/.vimrc
...
74: /path/to/otherscript.vim
...
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何将其他脚本所做的更改恢复为'iskeyword'吗?谢谢一堆.
小智 6
我喜欢在可以使用after目录结构时避免autocmds .
$ mkdir -p ~/.vim/after/{ftplugin,syntax,indent}
$ echo 'setlocal iskeyword-=$' >> ~/.vim/after/ftplugin/php.vim
Run Code Online (Sandbox Code Playgroud)
这将after在您的用户特定的vim配置文件夹中设置基本目录.虽然~/.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
Run Code Online (Sandbox Code Playgroud)
我还有一个after/indent/php.vim文件应该可以解决我<?php ?>在模板文件中切换区域时遇到的缩进行为时遇到的一些令人烦恼的缩进问题,但是代码是一团糟,从来没有真正在第一个工作地方,所以我不会在这里重现它.我提到它只是为了给你一个关于钩子后可以做什么的例子.