Mi config Vim incluye plugins que tratan de manejar proyecto actual, etiquetas de generación, etc . Esto es bastante útil para mi programación diaria en Vim, pero es molesto cuando uso Vim para algunas ediciones rápidas, como:
- editar un mensaje de confirmación git;
- edito un comando de shell cuando Ctrl+xCtrl+eescribo zsh o bash;
- etc.
Tampoco me gusta --noplugins
, ya que todavía quiero aprovechar algunos complementos en modo de edición rápida, como surround, movimiento fácil y muchos otros.
Por lo tanto, quiero tener un "modo de luz" (o "modo rápido"), en el que se omitirán algunos de los complementos, pero no todos.
Mi primera idea fue tener un argumento especial de línea de comandos, que analizaría en vimscript, pero buscar rápidamente en Google muestra que actualmente es imposible en vimscript (por cierto, muy triste).
Mi segunda idea es establecer alguna variable de entorno al ejecutar vim, como esta:
$ VIM_LIGHT_MODE=1 vim
Esto funciona en git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Pero si lo hago EDITOR='VIM_LIGHT_MODE=1 vim'
, y escribo Ctrl+xCtrl+een el shell, no funciona:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Entonces probé esto: EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
pero también falla:
vim': -c: line 1: syntax error: unexpected end of file
(Para ser sincero, este parece particularmente extraño, parece que no entiendo cómo $EDITOR
se usa exactamente , y me alegrará si alguien explica lo que está sucediendo aquí)
Todos los otros experimentos fallaron también.
El único truco que se me ocurre es configurar algunos servername
, como:
$ vim --servername VIM_LIGHTWEIGHT_MODE
Y luego verifique v:servername
vimscript, pero este es un truco total : no es para eso para lo que sirve el nombre del servidor.
Entonces, ¿hay una forma más limpia de lograr lo que quiero?
fuente
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.vim
comovim -u .vimrc-light
.env
nada, mi shell-fu todavía es demasiado débil. Considere escribirlo como respuesta, para que pueda aceptarlo.Respuestas:
Hay al menos dos posibilidades:
uso
env
:usar
vim
con otro archivo de inicialización, por ejemplo.vimrc-light
:fuente
Si bien la respuesta aceptada es ciertamente mejor, me gustaría discutir
EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
. El problema aquí es queEDITOR
se invoca con argumentos, y los argumentos pasados abash -c
no se reenvían automáticamente avim
. Necesitas usar"$@"
:Sin embargo, el primer argumento después del comando en
bash -c
es$0
, que no forma parte$@
, por lo que debe usar un argumento de marcador de posición:Con estos inconvenientes, no es una buena opción, pero aún así es viable.
fuente
En realidad, su primera idea es posible, también de manera elegante. Puede crear un comando definido por el usuario y luego llamar a vim con la
+
sintaxis.Simplemente defina un comando de usuario personalizado en su
.vimrc
archivo de la siguiente manera:Luego, desde la línea de comandos, puede iniciar vim de esta manera:
Usé esto en mi
.vimrc
para tomar notas fácilmente, así:Esto permite llamarlo con esto
vim +Note
. Luego haga un alias de shell en surc
archivo de shells , para permitir llamadas aún más fáciles. En mi.bashrc
archivo alias los comandos vim anteriores como este:Solución de muestra
En su caso, podría escribir algo a lo largo de estas líneas en su
.vimrc
archivo:A continuación, pruebe el modo de luz de la forma que desee en función de cada complemento o grupos de complementos, etc., utilizando una
if
instrucción vim similar a esta en su.vimrc
archivo:Cosas a tener en cuenta
!
después del comando vimcommand!
significa que este se sobreponen a los comandos definidos de manera similar con el mismo nombre. Esto es preferible.CustomUserCommandName
DEBE tener la primera letra en mayúsculag:
que puede usars:
o con cualquier alcance que se ajuste a sus necesidades.fuente