【问题标题】:Options for .vimrc from command-line arguments?来自命令行参数的 .vimrc 选项?
【发布时间】:2014-02-02 23:58:36
【问题描述】:

我有一个自定义的 .vimrc 文件,我在许多不同的机器上使用它。

有些机器不如其他机器强大,如果能够加载 .vimrc 文件的“精简”版本,那就太好了。但是,我想维护一个 .vimrc 以避免碎片。

理想情况下,我想从命令行向我的 .vimrc 传递参数。如果选择了“最小”选项,.vimrc 将跳过加载资源最密集的插件。

有人知道最好/最干净的方法吗?

谢谢!

编辑:我所说的较慢的机器是 SSH 上的 Raspberry Pi。 Vim 本身并不慢,尽管我有几个插件,包括 NERDTree 和 Syntastic,它们需要大量时间才能在 Pi 有限的 CPU 上加载。通过为我的“最小”配置删除大多数插件,我将加载时间从 3.5 秒缩短到 0.5 秒。

【问题讨论】:

  • “有些机器不如其他机器强大......” Vim 真正需要多少功率?;)
  • 我有个主意。读取 /proc/xxx 以获取 cpu 信息、内存、可用内存、cpu 负载等,然后决定加载哪个 vim 配置。它可以使用 vimscript(在外部命令的支持下)或其他语言/脚本来完成,作为 vim 启动脚本的包装器。这是可行的,但是...@summea 的评论很好!
  • 我不小心将此标记为 stackoverflow.com/questions/4618151/… 的骗子 - 这不是一个骗子,但您可能会发现这个问题很有用
  • 我很好奇 vimrc 的哪些部分可能比其他部分需要更多的能量。
  • 我所说的速度较慢的机器是 SSH 上的 Raspberry Pi。 Vim 本身并不慢,尽管我有几个插件,包括 NERDTree 和 Syntastic,它们需要大量时间才能在 Pi 有限的 CPU 上加载。通过为我的“最小”配置删除大多数插件,我将加载时间从 3.5 秒减少到 0.5 秒。

标签: vim


【解决方案1】:

看看源码:

source /foo/bar/another_vimrc

您的“重”vimrc 可以只获取基本的vimrc 并添加您想要的内容。这对于项目/机器特定的缩写、ctags 等也非常方便。

【讨论】:

  • 我就是这样做的。每台机器上的不同本地文件。这是我的~/.vimrc 的最后一行:if filereadable(expand('~/.vim-local/vimrc-local')) | source ~/.vim-local/vimrc-local | endif。我可以用~/vimrc-local/after 文件和一些runtimepath 操作来做更复杂的事情,但到目前为止,使用单个本地文件一切正常。
【解决方案2】:

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

因此,在功能较弱的机器上,您可以将vim 别名为vim --cmd 'let weak=1',然后在您的$VIMRC 中您可以说:

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

【讨论】:

  • 你可以为此设置一个别名:alias vim='vim --cmd "let weak=1"' 在你的.bashrc
【解决方案3】:

这不会保留单个 vimrc 文件,而是为了其他有相同问题的人(如页面顶部所述):

$ vim -u ~/.vim-min.vim

请注意,这将禁止加载系统 vimrc 文件(如果有)和您的个人 vimrc 文件。

:help -u
:help startup

(参见第二个参考的第 3 步。)

【讨论】:

    【解决方案4】:

    从上面的优秀答案中,我得到了这个工作:

    ~/.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 中使用的终端。

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 2020-07-20
      • 2011-04-21
      • 2023-03-13
      • 2014-12-22
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多