Seleccione vimenter autocmd's para ejecutar según los argumentos

1

Estoy tratando de reducir la cantidad de cosas que necesito hacer cuando abro VIM. Tengo los tres escenarios siguientes que me gustaría tener en cuenta:

1. Abra vim con un directorio especificado

vim .

Para este caso, me gustaría abrir NERDTree, con esto en mi ~/.vimrc:

autocmd vimenter * NERDTree


2. Abra vim con un directorio especificado, en un monitor grande

vim . --large

Aquí me gustaría abrir NERDTree y hacer algunas divisiones de pantalla:

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


3. Abra vim con un nombre de archivo específico

vim ~/vimrc

Para este caso, me gustaría no ejecutar ninguno de los autocmdmensajes que mencioné anteriormente.


Editar - Implementación final

Gracias a la respuesta de 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

y ejecutarlo con L=t vim ., vim .ovim specific_file

RyanB
fuente

Respuestas:

2

Puede usar argc()y argv()para encontrar los argumentos para vim en su vimrc y establecer los autocmds en consecuencia. Entonces, para el primero, podría hacer algo como esto solo para abrir NERDTree si el primer argumento es.

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

Para el monitor de gran tamaño Creo que usando la variable de shell sería la forma correcta de hacer esto porque vim piensa que --largeen vim --largees un argumento a VIM no a su script. No sé si hay alguna forma de evitar esto.

Podría hacer algo como, vim -- . --largepero luego vim abre un búfer para un archivo --largeque probablemente no sea lo que desea.

FDinoff
fuente
¡Gracias! Estoy actualizando la pregunta con mi implementación final.
RyanB
@RyanB También puede definir Len su bashrc para que no tenga que escribirlo todo el tiempo.
FDinoff