使用vi (vim)读取一个~/.exrc以外的exrc文件

3
我们希望能够使用另一个ex初始化文件启动vi(或vim)。默认情况下,这是~/.exrc。
不幸的是,vim(1)在此系统上也用于“man ex”,但它没有提到.exrc。
如有任何解决办法以提供等效行为将不胜感激。

1
听起来你正在处理一个古老版本的vi。你使用的是哪个版本(vi --version)? - glts
刚刚尝试了使用strace追踪Vim的ex命令,发现它并没有涉及到任何像.exrc这样的文件。 - fork0
glts:VIM - Vi IMproved 7.2(2008年8月9日,编译于2010年7月12日12:49:33)。 - projix
fork0:在我的Debian 6.0系统上,使用ex符号链接到vim.basic,“strace ex 2>&1 | grep exrc”会产生一个关于~/.exrc的stat和open。 - projix
我认为如果.vimrc不存在,vim会读取.exrc - Keith Thompson
3个回答

2
我原本期望常见的-u conf_file能够使用,但在这里失败了。一个解决方法是使用-u NONE不加载配置文件,然后用-c命令引入你想要的配置文件:
ex -u NONE -c 'source your_local_exrc'

1
谢谢Thor。这已经足够让我找到我需要的东西了,即“vi -u NONE -S your_local_exrc”。因为-c是用于命令的,而-S则是用于源文件。我现在也看到了,通过在vim中运行“:help init”,可以获得有关此详细文档。我最初在man页面中搜索exrc并不足够。 - projix
我本意是说-c 'source your_local_exrc'(现在已经修复),但是-S更好:)。 - Thor

1
在您的~/.exrc(对于vi)文件的开头添加以下行
set exrc   " Dangerous
set secure " Disables shell and write commands in .exrc/.vimrc

这将确保如果存在当前目录中的.exrc文件,则加载该文件。

1
一些传统的vi/ex版本使用EXINIT环境变量作为启动时要执行的命令字符串,并在未设置时执行$HOME/.exrc。如果您正在运行此类版本,则可以将EXINIT设置为so /other/file/to/execute以源替代启动文件。

谢谢。现在我在vim内找到了“:help init”,我发现其中确实记录了EXINIT环境变量及其优先于~/.exrc文件的顺序。 - projix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接