根据参数选择要运行的 vimenter 自动命令

根据参数选择要运行的 vimenter 自动命令

我正在尝试减少打开 VIM 时需要执行的操作数量。我想考虑以下三种情况:

1.打开指定目录的vim

vim .

对于这种情况,我想打开 NERDTree,其中包含以下内容~/.vimrc

autocmd vimenter * NERDTree


2. 在大屏幕上打开指定目录的 vim

vim . --large

在这里我想打开 NERDTree 并进行一些屏幕分割:

autocmd vimenter * NERDTree
autocmd vimenter * wincmd w
autocmd vimenter * wincmd v
autocmd vimenter * wincmd v


3. 使用特定文件名打开 vim

vim ~/vimrc

对于这种情况,我不想运行autocmd上面提到的任何操作。


编辑-最终实施

感谢 FDinoff 的回答。

if argc() == 1 && arv(0) == '.' " `vim .` called
  autocmd vimenter * NERDTree   " Start up NERDTree
  autocmd vimenter * wincmd w   " Jump to split that file is open in

  if !empty($L)
    autocmd vimenter * wincmd v
    autocmd vimenter * wincmd v
  endif
endif

并使用L=t vim .vim .或运行它vim specific_file

答案1

您可以使用argc()argv()在 vimrc 中找到 vim 的参数并相应地设置自动命令。因此,对于第一个,你可以这样做,只在第一个参数为.

if argc() == 1 && argv(0) == '.'
    autocmd vimenter * NERDTree
endif

对于大型显示​​器,我认为使用 shell 变量是正确的方法,因为 vim 认为--largeinvim --large是 vim 的参数,而不是脚本的参数。我不知道是否有办法解决这个问题。

您可以做类似的事情vim -- . --large,但是 vim 会为一个文件打开一个缓冲区--large,这可能不是您想要的。

相关内容