如何为当前目录下的所有文件指定Vim设置?
理想的解决方案是,如果Vim在搜索〜/ .vimrc之前搜索并读取当前目录中的.vimrc,并在那里应用整个树的设置.
我见过一个插件,但这意味着应用的设置不透明,因为它们需要安装插件.相反,模式行是透明的,因为无论用户的vimrc还是特定的vim调用,模式行设置都将应用于该文件.
我尝试过的是
:so vimrc 在模式中.我想两者都不会出于安全原因而起作用.我不需要vimrc的全部功能; 绑定到模式行可接受的设置就足够了.我的目标是让vimmers更容易在项目中采用编码标准.
sth*_*sth 86
你可以把这样的东西放进去 $VIM/vimrc
autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4
Run Code Online (Sandbox Code Playgroud)
小智 49
我强烈建议不要使用 set exrc
即使set secure在*nix下,如果您拥有该文件,vim仍将运行自动命令,shell等.因此,如果您正在编辑该tarball中的文件,我向您发送了一个.vimrc包含:
autocmd BufEnter * :silent! !echo rm -rf ~/
Run Code Online (Sandbox Code Playgroud)
你可能会比我愿意少逗乐.
Luc*_*tte 42
我是插件方式的拥护者.有几个原因:
顺便说一句,某些解决方案可用于获取单个配置文件.这与插件方法非常相似,除了.vimrc必须使用非全局选项进行寄生,并且它不容易支持多个/共享配置文件.
小智 28
这个问题很古老,但这似乎是一个非常自然而持久的问题.
我的解决方案非常简单.我将.vimrc文件放在项目的根目录中.该.vimrc文件的第一行通常是源代码~/.vimrc,然后添加我想要的特定配置.我别名tvim='vim -u .vimrc',并tvim在我的个人项目目录中使用."tvim"代表"受信任的vim",这意味着如果我在一个带有.vimrc文件的目录中执行它并出现问题,我就没有人应该责怪自己,因为我明确表示我信任它.此外,我将一组这些存储起来,以便我有时可以将我想要的软链接到特定类型的项目.
小智 20
实际上支持在工作目录中放置.vimrc,默认情况下仅禁用.见:h 'exrc'和:h startup对细节的设置'exrc'将使阅读.vimrc从当前目录.
使用它时也建议:set secure使用它.这将锁定当前目录中的:autocmdshell和write命令.vimrc.
另一件可能值得关注的事情是:h session使用标准视图和项目设置来设置session().
总而言之,我可能会选择Luc Hermitte自己详细介绍的插件选项.
小智 10
为了最大限度地减少任何"自动运行"功能的安全风险,我可以建议您使用vim的现有功能而不是插件(便携行李)吗?
例如.
我的本地文件夹的vimrc文件名为"_gvimrc"(故意).这减少了像phen这样的人以牺牲自己为代价的希望.:-)
在我的$ VIM/.vimrc文件中,我插入了:
if filereadable("_gvimrc")
source _gvimrc
endif
Run Code Online (Sandbox Code Playgroud)
在末尾.
我在"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中设置的内容进行处理.
如果您想要强制执行的编码标准类型与缩进样式、制表符大小、文件格式和字符集相关,那么您可能需要研究“editorconfig”,这是一个跨编辑器标准,用于在一个特定的项目,并让所有编辑器遵循该配置。
“editorconfig”规范允许项目根据项目内的文件扩展名或名称请求不同的设置。(因此,您可以使用 TAB 来创建 Makefile,使用 4 个空格来缩进 Python 脚本,使用 2 个空格来缩进 shell 脚本。)
您需要一个插件才能在 Vim 中使用“editorconfig”。官网提供了一个,但我个人推荐sgur/vim-editorconfig,它是用纯 Vimscript 编写的,所以你不需要太担心外部依赖。
由于“editorconfig”旨在跨编辑器兼容性,因此它的功能非常有限,因此如果您想要一致的空格、文件格式(DOS 与 Unix)和编码(Unicode utf-8 等),那么“editorconfig” “ 是给你的。