从命令行参数获取.vimrc的选项?

9
我有一个自定义的.vimrc文件,我在许多不同的机器上使用它。
有些机器比其他机器弱一些,能够加载一个“精简版”的.vimrc文件将是好的。然而,我想保持单个.vimrc以避免碎片化。
理想情况下,我希望能够从命令行传递参数给我的.vimrc文件。如果选择了“minimal”选项,则.vimrc文件将跳过加载最消耗资源的插件。
有人知道最好/最清洁的方法吗?
谢谢!
编辑:我谈论的较慢的机器是通过SSH连接的Raspberry Pi。Vim本身并不慢,尽管我有几个插件,包括NERDTree和Syntastic,在Pi的有限CPU上需要很长时间来加载。通过为我的“minimal”配置取消大部分插件,我将加载时间从3.5秒缩短至0.5秒。

3
有些机器比其他机器的性能要低一些...(Vim 真正需要多少性能?😉) - summea
1
我有一个想法。读取/proc/xxx以获取CPU信息、内存、可用内存、CPU负载等,然后决定加载哪个vim配置文件。可以使用vimscript(支持外部命令)或其他语言/脚本来作为vim启动脚本的包装器。这是可行的,但是@summea的评论很好! - Kent
1
我不小心将此标记为 https://dev59.com/YW445IYBdhLWcg3w9Oss 的重复内容 - 它并不完全是重复,但您可能会发现那个问题很有用。 - Ken
我很好奇vimrc的哪些部分需要比其他部分更强大的功能。 - romainl
1
我所说的较慢的机器是通过SSH连接的树莓派。Vim本身并不慢,但是我安装了几个插件,包括NERDTree和Syntastic,这些插件需要在树莓派有限的CPU上加载很长时间。通过将大多数插件从我的“最小”配置中删除,我将加载时间从3.5秒缩短到0.5秒。 - Bill
@Bill,很高兴它对你有用! - summea
4个回答

15

您可以使用--cmd开关,在加载任何VIMRC之前执行命令。

因此在您的性能较差的计算机上,您可以将vim别名为诸如vim --cmd 'let weak=1'的内容,然后在您的$VIMRC中可以这样说:

if exists('weak')
  echo "poor machine"
endif

2
你可以在你的.bashrc文件中设置一个别名:alias vim='vim --cmd "let weak=1"' - Tom

4

看一下源代码:

source /foo/bar/another_vimrc

您的“臃肿”vimrc文件可以直接引用基本vimrc文件并添加所需内容。这对于项目/机器特定的缩写、ctags等非常有用。

1
这就是我做的方式。每台机器上都有不同的本地文件。这是我的 ~/.vimrc 文件的最后一行:if filereadable(expand('~/.vim-local/vimrc-local')) | source ~/.vim-local/vimrc-local | endif。我可以使用 ~/vimrc-local/after 文件和一些 runtimepath 操作来完成更复杂的操作,但到目前为止,只用一个本地文件就能正常工作了。 - Jim Stewart

3
这不会保留单个vimrc文件,但是出于其他人有相同问题的考虑(如页面顶部所述):
$ vim -u ~/.vim-min.vim

请注意,这将禁止加载系统vimrc文件(如果有的话)和个人vimrc文件。
:help -u
:help startup

(请参阅第二个参考资料的第3步。)

0
从上面的优秀答案中,我得到了这个可行的解决方案:
~/.vimrc:
if exists('FLAG')       " 'FLAG' passed from ~/.bashrc 'vimm' alias
    set textwidth=150   " (launches vim in expanded terminal window)
    set lines=58
else
    set textwidth=79
    set lines=40
endif

~/.bashrc:

# Needed to combine following two lines for ~/.vimrc use:
#   alias vimm='konsole --geometry 1900x1040+0+0 -e "bash -c \"vim\""; exit'
#   vim --cmd 'let FLAG=1'
str="'let FLAG=1'"
alias vimm='konsole --geometry 1900x1040+0+0 -e "bash -c \"vim --cmd $str\""; exit'

现在,“vim”(正常使用)会在普通大小的终端中启动Vim,而“vimm”会在更大的终端中启动Vim(备用设置)。

“Konsole”是我在Arch Linux中使用的终端。


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