如何为当前目录下的所有文件指定Vim设置?
理想的解决方案是,如果Vim在搜索〜/ .vimrc之前搜索并读取当前目录中的.vimrc,并在那里应用整个树的设置.
我见过一个插件,但这意味着应用的设置不透明,因为它们需要安装插件.相反,模式行是透明的,因为无论用户的vimrc还是特定的vim调用,模式行设置都将应用于该文件.
我尝试过的是
将.vimrc放在工作目录中
:so vimrc
在模式中.
我想两者都不会出于安全原因而起作用.我不需要vimrc的全部功能; 绑定到模式行可接受的设置就足够了.我的目标是让vimmers更容易在项目中采用编码标准.
你可以把这样的东西放进去 $VIM/vimrc
autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4
我强烈建议不要使用 set exrc
即使set secure
在*nix下,如果您拥有该文件,vim仍将运行自动命令,shell等.因此,如果您正在编辑该tarball中的文件,我向您发送了一个.vimrc
包含:
autocmd BufEnter * :silent! !echo rm -rf ~/
你可能会比我愿意少逗乐.
我是插件方式的拥护者.有几个原因:
Modelines受到特别限制:我们不能设置变量(调整其他(ft)插件,例如"for-snippet的括号是否应该换行?"),或者调用它们的函数(我不限制自己)对于编码标准,我还根据当前目录设置makefile使用)
DRY:对于modelines,需要在每个文件中重复设置,如果要设置太多东西或调整要更改,它将很快变得难以维护,而且,它将需要使用模板扩展器插件(如果你的项目中有几个vimmers,你应该考虑哪些.
不是每个人都使用vim来开发.我不想被别人的编辑设置困扰,我为什么要寄生他们的?
要求vimmers安装相同的插件更容易,而不是让他们在.vimrc中复制粘贴和维护相同的行.
设置可以与其他项目文件一起保存(cvs/svn/git/whatever)
每个项目都有一个配置文件非常容易 - 使用插件,我有一个全局配置文件,用于整个项目的编码标准,以及每个子项目的特定配置文件(要使用的makefile,要调用的可执行文件) ,...)
顺便说一句,某些解决方案可用于获取单个配置文件.这与插件方法非常相似,除了.vimrc必须使用非全局选项进行寄生,并且它不容易支持多个/共享配置文件.
这个问题很古老,但这似乎是一个非常自然而持久的问题.
我的解决方案非常简单.我将.vimrc
文件放在项目的根目录中.该.vimrc
文件的第一行通常是源代码~/.vimrc
,然后添加我想要的特定配置.我别名tvim='vim -u .vimrc'
,并tvim
在我的个人项目目录中使用."tvim"代表"受信任的vim",这意味着如果我在一个带有.vimrc
文件的目录中执行它并出现问题,我就没有人应该责怪自己,因为我明确表示我信任它.此外,我将一组这些存储起来,以便我有时可以将我想要的软链接到特定类型的项目.
实际上支持在工作目录中放置.vimrc,默认情况下仅禁用.见:h 'exrc'
和:h startup
对细节的设置'exrc'
将使阅读.vimrc
从当前目录.
使用它时也建议:set secure
使用它.这将锁定当前目录中的:autocmd
shell和write命令.vimrc
.
另一件可能值得关注的事情是:h session
使用标准视图和项目设置来设置session().
总而言之,我可能会选择Luc Hermitte自己详细介绍的插件选项.
为了最大限度地减少任何"自动运行"功能的安全风险,我可以建议您使用vim的现有功能而不是插件(便携行李)吗?
例如.
我的本地文件夹的vimrc文件名为"_gvimrc"(故意).这减少了像phen这样的人以牺牲自己为代价的希望.:-)
在我的$ VIM/.vimrc文件中,我插入了:
if filereadable("_gvimrc") source _gvimrc endif
在末尾.
我在"fileexists()"上使用"filereadable()",因为后者在同时打开多个(10+)文件时会有一些怪癖(不知道为什么).
当然,您可以提供自己独特的文件名,以进一步混淆潜在的麻烦制造者.例如"_mygvimrc","_ gobbledygook"等.您只需要在一个标准名称上找到它并在$ VIM/.vimrc中相应地获取它.依赖于vi/vim内部,可以解决可移植性问题.但是,如果您以后使用vim编辑$ VIM/.vimrc文件,请不要将其命名为.vimrc(或_vimrc)以防止递归源.
从Windoze 98SE开始,通过Windork XP Pro,现在使用Windorkier 7(已经5年多了).我将在资源管理器中标记.txt文件列表,然后使用"使用多个Vim编辑",从而同时打开多个vim窗口.对于我的工作,我每天都会这样做几次.所有文件都使用我在本地_gvimrc中设置的内容进行处理.