Pregunta:
Leí un documento sobre vim y el autor sugirió una línea de código que debería colocarse en .vimrc, pero no tengo ni idea de qué es.
command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>), 1, <bang>0)
Entonces, ¿qué es el command!
, -bang
, -nargs
, etc?
Respuesta:
Como siempre, la ayuda es tu mejor amiga:
:com[mand][!] [{attr}...] {cmd} {rep}
Defina un comando de usuario. El nombre del comando es {cmd} y su texto de reemplazo es {rep}. Los atributos del comando (ver más abajo) son {attr}. Si el comando ya existe, se informa de un error, a menos que un! se especifica, en cuyo caso se redefine el comando.
Por lo tanto :command!
se utiliza para crear un nuevo comando que puede utilizar desde la línea de comandos. Aquí el nuevo comando es :Find
y se usa para ejecutar fzf#vim#grep()
que es una llamada al complemento fzf
que permitirá encontrar algunos archivos de forma difusa.
Los otros argumentos se describen en la documentación:
-
:h :command-nargs
-nargs
se usa para hacer que el nuevo comando pueda tomar un argumento:Find arg1
-
:h :command-bang
-bang
se usa para que el nuevo comando pueda interpretar un!
como en:Find!
!
El !
justo después del command
se usa para decirle a vim que redefina el comando si ya existe, de esta manera cuando .vimrc
su .vimrc
no tiene un mensaje de error.
En cuanto a los argumentos pasados a la función fzf
, te dejaré leer el documento del complemento para ver qué hacen 🙂