当前位置:  开发笔记 > 编程语言 > 正文

Vim:对目录中的文件应用设置

如何解决《Vim:对目录中的文件应用设置》经验,为你挑选了6个好方法。

如何为当前目录下的所有文件指定Vim设置?

理想的解决方案是,如果Vim在搜索〜/ .vimrc之前搜索并读取当前目录中的.vimrc,并在那里应用整个树的设置.

我见过一个插件,但这意味着应用的设置不透明,因为它们需要安装插件.相反,模式行是透明的,因为无论用户的vimrc还是特定的vim调用,模式行设置都将应用于该文件.

我尝试过的是

将.vimrc放在工作目录中

:so vimrc 在模式中.

我想两者都不会出于安全原因而起作用.我不需要vimrc的全部功能; 绑定到模式行可接受的设置就足够了.我的目标是让vimmers更容易在项目中采用编码标准.



1> sth..:

你可以把这样的东西放进去 $VIM/vimrc

autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4


奇怪的是,当我的路径包含符号链接时,这不起作用; 我必须在没有符号链接的情况下使用完整路径才能工作.

2> 小智..:

我强烈建议不要使用 set exrc

即使set secure在*nix下,如果您拥有该文件,vim仍将运行自动命令,shell等.因此,如果您正在编辑该tarball中的文件,我向您发送了一个.vimrc包含:

autocmd BufEnter * :silent! !echo rm -rf ~/

你可能会比我愿意少逗乐.


对于加载vim时自动执行的插件也是如此.

3> Luc Hermitte..:

我是插件方式的拥护者.有几个原因:

Modelines受到特别限制:我们不能设置变量(调整其他(ft)插件,例如"for-snippet的括号是否应该换行?"),或者调用它们的函数(我不限制自己)对于编码标准,我还根据当前目录设置makefile使用)

DRY:对于modelines,需要在每个文件中重复设置,如果要设置太多东西或调整要更改,它将很快变得难以维护,而且,它将需要使用模板扩展器插件(如果你的项目中有几个vimmers,你应该考虑哪些.

不是每个人都使用vim来开发.我不想被别人的编辑设置困扰,我为什么要寄生他们的?

要求v​​immers安装相同的插件更容易,而不是让他们在.vimrc中复制粘贴和维护相同的行.

设置可以与其他项目文件一起保存(cvs/svn/git/whatever)

每个项目都有一个配置文件非常容易 - 使用插件,我有一个全局配置文件,用于整个项目的编码标准,以及每个子项目的特定配置文件(要使用的makefile,要调用的可执行文件) ,...)

顺便说一句,某些解决方案可用于获取单个配置文件.这与插件方法非常相似,除了.vimrc必须使用非全局选项进行寄生,并且它不容易支持多个/共享配置文件.



4> 小智..:

这个问题很古老,但这似乎是一个非常自然而持久的问题.

我的解决方案非常简单.我将.vimrc文件放在项目的根目录中.该.vimrc文件的第一行通常是源代码~/.vimrc,然后添加我想要的特定配置.我别名tvim='vim -u .vimrc',并tvim在我的个人项目目录中使用."tvim"代表"受信任的vim",这意味着如果我在一个带有.vimrc文件的目录中执行它并出现问题,我就没有人应该责怪自己,因为我明确表示我信任它.此外,我将一组这些存储起来,以便我有时可以将我想要的软链接到特定类型的项目.



5> 小智..:

实际上支持在工作目录中放置.vimrc,默认情况下仅禁用.见:h 'exrc':h startup对细节的设置'exrc'将使阅读.vimrc从当前目录.

使用它时也建议:set secure使用它.这将锁定当前目录中的:autocmdshell和write命令.vimrc.

另一件可能值得关注的事情是:h session使用标准视图和项目设置来设置session().

总而言之,我可能会选择Luc Hermitte自己详细介绍的插件选项.


请参阅phen的评论.这可能会导致严重的安全隐患.

6> 小智..:

为了最大限度地减少任何"自动运行"功能的安全风险,我可以建议您使用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中设置的内容进行处理.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有