Tengo un problema en Vim, y creo que puede estar en mi vimrc
archivo (o me han dicho que podría ser mi vimrc
archivo).
¿Cómo verifico esto? Si es mi vimrc
archivo, ¿cómo sé dónde se encuentra exactamente el problema?
Tengo un problema en Vim, y creo que puede estar en mi vimrc
archivo (o me han dicho que podría ser mi vimrc
archivo).
¿Cómo verifico esto? Si es mi vimrc
archivo, ¿cómo sé dónde se encuentra exactamente el problema?
Respuestas:
Lo primero que debe hacer es iniciar Vim con la configuración predeterminada:
vim -u NONE -U NONE -N
Esto -u NONE
evita que Vim cargue su vimrc, -U NONE
evita que Vim cargue su gvimrc y -N
le dice a Vim que use el modo no compatible (esto no es obligatorio, pero la mayoría de los usuarios de Vim no están acostumbrados al modo "compatible"). Tenga en cuenta que NONE
se requiere que esté en mayúsculas.
En Windows, puede agregar estos indicadores creando un nuevo acceso directo 1 .
Si el problema persiste, entonces sabes que no es algo en tu vimrc.
Si el problema desaparece, ahora es causado por algo en su archivo vimrc.
¡Hurra! Ve y haz tu pregunta. ¡Asegúrese de mencionar que intentó iniciar Vim sin un archivo vimrc!
Si aún no lo ha hecho, probablemente quiera guardar primero una copia de seguridad de su archivo vimrc.
Lo siguiente que probablemente quiera hacer es deshabilitar todos los complementos primero; los complementos pueden alterar bastante en Vim. Si esto soluciona el problema, intente averiguar
qué complemento vuelve a habilitarlos uno por uno. Después de descubrir qué complemento causa exactamente el problema, puede intentar solucionarlo leyendo la documentación de este complemento y / o haciendo una pregunta etiquetada con plugin-<name>
.
Si es no un plugin, y usted no tiene ninguna idea de lo que está causando el problema, entonces es un procedimiento de ensayo y error. Comente una o más líneas en su vimrc, inicie Vim, verifique si ocurre el problema y repita este procedimiento hasta que el problema deje de ocurrir. La forma más rápida de hacer esto es:
Al final, debe tener una sola opción o una combinación de algunas opciones que causen su problema. Puede obtener más información sobre cualquier opción en Vim utilizando:
:help 'option_name'
Las citas son importantes aquí, generalmente funciona sin ellas, pero a veces terminas en la página incorrecta si las omites.
Si todavía está confundido después de leer la página de ayuda, ya sabe dónde hacer una pregunta ;-)
Si desea aislar un solo complemento, tal vez para hacer una pregunta al respecto, desea cargar lo menos posible pero aún así cargar el complemento; puede hacerlo fácilmente con la función de paquetes de Vim. Esto requiere Vim 8 o una versión razonablemente reciente de Neovim.
Crear un nuevo directorio vacío; Usaremos la ~/plugin
ruta en este ejemplo. Ahora coloque el complemento en el pack/plugins/start/$name
directorio normal . Por ejemplo:
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
Cree un test-vimrc
archivo con los siguientes contenidos; esto asegurará que Vim cargará complementos desde el ~/plugin
directorio y no desde el ~/.vim
directorio:
set nocompatible
set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
packloadall!
syntax on
filetype plugin indent on
Comience Vim con:
vim -U NONE -u ~/test-vimrc
Ahora tiene un vimrc mínimo con solo este complemento.
Notas al pie
1 Por ejemplo: en 64 bits de Windows, el acceso directo sería algo como esto: "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N
. Para crearlo, haga clic derecho en el Explorador de archivos donde desee el acceso directo, luego seleccione Nuevo -> Acceso directo y pegue el texto del acceso directo. Es posible que deba cambiar la ruta de Vim si su Vim está instalado en otra ubicación.
-U NONE
si tienes -u NONE
.
Hay un -D
parámetro Vim especialmente para la depuración que irá al modo de depuración después de ejecutar el primer comando desde un script.
Por ejemplo, para ejecutar Vim en modo de depuración sin ningún complemento, ejecutar como:
vim --noplugin -D
Escriba n
/ next
para analizar la siguiente línea y siga presionando Enter.
Y cont
o q
volver a la vim
interfaz.
Si está utilizando una versión GUI, coloque un gui
comando en su vimrc para iniciar la depuración justo después de ese comando.
Presione Ctrl+ dpara ver la lista de comandos disponibles
Lee mas:
:help debug-scripts
Como ya se mencionó, primero trate vim -u NONE -U NONE -N
de asegurarse de que su vainilla vim esté funcionando bien.
Luego inicie vim normalmente y verifique
:messages
desde dentro de vim después del problema, que mostrará todas las advertencias y errores.
Finalmente inicie vim con el siguiente comando
vim -V9logfile.log
que creará un archivo de registro llamado logfile.log
, -V9
es el nivel de registro e intenta reproducir su problema.
Un consejo más: tan cavernícola como pueda parecer, me gusta agregar: "mensaje" de echom a mi .vimrc para ver qué se está ejecutando y qué no.
Por ejemplo
if executable('ag')
:echom "AG FOUND"
...
endif
Esto me ayuda a ver rápidamente si se está ejecutando el bloque if, etc. El mensaje se imprimirá en la consola la próxima vez que inicie vim.
echom
otro comando interesante es :messages
conseguir que se repita el registro completo de los mensajes. A veces puede ser útil mirarlos después del inicio.
Una cosa que he encontrado ayuda es mantener una colección de variables que alternan partes de tu .vimrc
para que puedas deshabilitar o habilitar partes de ella sin tener que comentar nada. También tiene el efecto secundario agradable de obligarlo a pensar en la organización de su .vimrc
.
" feature toggles in vimrc
let g:vimrc_feat_pathogen = 1
let g:vimrc_feat_core_minimal = 1
let g:vimrc_feat_matchit = 1
let g:vimrc_feat_options = 1
let g:vimrc_feat_colors_and_highlight = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding = 1
let g:vimrc_feat_autocommand_group = 1
let g:vimrc_feat_custom_definitions = 1
let g:vimrc_feat_load_opam = 1
Aquí hay un ejemplo de una sección protegida por un if
:
if g:vimrc_feat_core_minimal
set nocompatible
filetype plugin indent on
syntax on
endif
Mi tiempo de carga de vimrc fue muy lento, alrededor de 400 ms, y lo reduje a 20 ms solo eliminando esta línea:
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
Asegúrese de no tener llamadas a comandos externos como ese.
Aquí hay un procedimiento muy simple para comenzar.
:source %
o:so $MYVIMRC