Para asegurar que el comportamiento no se vea afectado por mi configuración personal, quiero iniciar Vim de una manera que ignore todos mis archivos de configuración instalados por el usuario, como si Vim hubiera sido recién instalado por primera vez y el usuario lo hubiera ejecutado inmediatamente.
Esto se aborda en las preguntas frecuentes que sugieren que la respuesta es iniciar Vim con el siguiente comando:
vim -u NONE -U NONE -N -i NONE
Esto llega a la mayor parte del camino, pero la runtimepath
opción aún contiene ~/.vim
y, en particular, ~/.vim/after
(por ejemplo, si posteriormente enciendo la detección del tipo de archivo y cambio el tipo de archivo, ~/.vim/after/syntax/the_relevant_filetype.vim
se ejecutará el código ).
Puedo solucionar este problema específico invocando los siguientes comandos en el inicio *:
:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after
... pero no estoy seguro si:
- Esta es una solución sólida: ¿son esas las únicas rutas que pueden hacer que la configuración del usuario surta efecto? ¿Hay algo más en lo que no haya pensado?
- Hay una mejor manera de lograr el resultado deseado.
* Al utilizar --cmd
o -u vimrc
argumentos de concha, o simplemente tecleando manualmente.
EDITAR : Aquí hay un ejemplo específico del tipo de problema que estoy tratando de solucionar. (Aunque me gustaría que la solución solucione cualquier otro problema posible que aún no haya encontrado):
Cree un archivo ~ / .vim / after / ftplugin / c.vim, que contenga el contenido:
noremap i :echom "This is not default behaviour"<CR>
Ahora tenemos alguna configuración instalada por el usuario que queremos ignorar. Probemos la solución sugerida por las preguntas frecuentes.
Ejecute Vim con el comando:
vim -u NONE -U NONE -N -i NONE
Ingrese los comandos:
:filetype plugin on :set ft=c i
Comportamiento deseado : Vim debe ingresar al modo Insertar. Esto es lo que haría si no existiera la configuración del usuario.
Comportamiento observado : Vim imprime "Este no es el comportamiento predeterminado"
HOME=/dev/null vim -u NONE
:?:cd ~
, pero también la ubicación predeterminada delviminfo
archivo es $ HOME, lo que puede causar E138. Supongo que crear un nuevo directorio vacío y usarlo para $ HOME podría ser la mejor solución.-u NONE
?/tmp
podría ser mejor, fue mi primer pensamiento, pero luego elegí / dev / null como un agujero negro. ... o algo asíHOME=$(mktemp -d) vim ...
.-u NONE
? Depende del comportamiento que necesites, supongo.Respuestas:
A partir de Vim 8.0.1554 (desafortunadamente todavía no Neovim), puede usar
vim --clean
. Este método es recomendado por:help bugs
.:help --clean
docs:fuente
$HOME
variable. Goodjob Vim desarrolladores. Y gracias a ti por la respuesta!--clean
ahora también funciona conneovim
master ( github.com/neovim/neovim/commit/… , que se incluirá en 0.4.0), pero no excluye el directorio de inicio.Una forma de eliminar archivos específicos del usuario sería utilizar un valor diferente de
$HOME
. Para permitir que no se lea ni escriba nada (como viminfo), puede usar/dev/null
:Esto causará errores
viminfo
, por lo que, en su lugar, podría crear una carpeta temporal o usar una existente (como/tmp
):Con tal
$HOME
,-u NONE
puede no ser necesario, dependiendo de lo que su administrador haya agregado a todo el sistemavimrc
. Por ejemplo, en todos los sistemas de laboratorio I administrar, añadí un/etc/vim/vimrc.local
(origen por defecto del Vim empaquetado/etc/vim/vimrc
) que tienenocompatible
,syntax
, etc., set, yfiletype on
así.fuente
No puedo responder mucho de eso, pero un punto que no veo mencionado, y estoy respondiendo una interpretación de lo que está en el título
algunos han sugerido
vim -u NONE
ovim -u NORC
eso es, de alguna manera, un poco más básico que simplemente ningún archivo vimrc. Cuando escribo 'i', no dice 'insertar'. Es posible que desee que diga 'insertar'. Si comenzaste vim con tu archivo vimrc en blanco, entonces se mostrará insert
eso es porque vim carga primero una configuración predeterminada.
Puede apuntar vim a ese archivo predeterminado para obtener el efecto de que su archivo vimrc esté en blanco. Compruebe que tiene
/etc/vim/vimrc
, y que puede hacervim -u /etc/vim/vimrc
o en osx, el archivo predeterminado es/usr/share/vim/vicmrc
fuente
vim --clean
se cargarádefaults.vim
. Esta respuesta se refiere al sistema vimrc (Ver:help system-vimrc
.), Que creo que no está cargado porvim --clean
.:help defaults.vim
), podría ser mejor para cambiar la fraseologíadefault config
asystem vimrc
en esta respuesta. O incluso mejor, ¡discuta ambos en la respuesta!De Vim-FAQ 2.5 :
fuente
ensure that none of the behaviour I'm seeing is caused by user config
- entonces parece que está tratando de hacer exactamente lo que se explica en estas Preguntas frecuentes. He releído tu pregunta y aún no entiendo cuáles son las razones que mencionaste.runtimepath
configuración.runtimepath
? Parece ser el valor predeterminado para esta opción, como se explica en:help rtp
. ¿Cómo afecta este valor a su prueba?