command-line – ¿Cómo se resuelve el historial de comandos entre varias instancias de Vim?

Pregunta:

Vim guarda un historial de los comandos ex (accesible a través de: y q:), y que persiste la historia después de dejar de fumar.

Si ejecuto varias instancias de Vim (mismo usuario, mismo directorio de inicio), ¿cómo arbitra Vim entre los historiales de comandos? Parece que gana el último proceso en salir. ¿Existe alguna forma de mantener los historiales de mando de todas las instancias?

Respuesta:

La respuesta a la pregunta del título es lo que observó. Del manual de usuario de vim :help 21.3

Cuando ejecuta Vim varias veces, la última que sale almacenará su información. Esto puede hacer que se pierda la información almacenada en Vims que salía previamente. Cada elemento se puede recordar solo una vez.

Sin embargo, el nombre de archivo del archivo viminfo (donde se almacena el historial de comandos, entre otras cosas como las marcas globales y el contenido del registro, si así se configura) se puede cambiar. Esto significa que puede configurar diferentes 'historiales' para diferentes proyectos o instancias de vim. Suponiendo que no ejecuta más de una instancia de vim por proyecto, administrar el nombre de archivo viminfo a través de vimrc (u otro complemento de configuración del proyecto) es una excelente manera de manejar esto.

Configurar archivos viminfo alternativos

Para la gestión de nivel de proyecto, queremos configurar vim para guardar su viminfo en un archivo diferente. Esto se puede hacer dentro de un vim en ejecución antes de salir, o por su vimrc, por ejemplo, puede tener líneas en su vimrc que detecten un directorio en particular como perteneciente a un proyecto.

:set viminfo+=nPath/to/custom/viminfofile

Un ejemplo de cómo vimrc configura automáticamente esto según el directorio:

 if getcwd() == "/projects/projA"
     set viminfo+=n~/.viminfo-projA
 endif

El resultado de lo anterior es que el historial específico del proyecto se cargará al inicio y se guardará al salir, si vim se inicia en el directorio / projects / projA.

Cargue un viminfo alternativo durante el inicio

Esto es bueno para el caso en el que desea guardar su historial a un lado y cargarlo más tarde, sin administrarlo a nivel de proyecto.

Primero, para guardar el historial, agregue la opción viminfo como se indicó anteriormente antes de salir. Luego, para cargar el historial, inicie vim con la opción -i

vim -i Path/to/custom/viminfofile

Si no desea salir de vim para guardar el archivo viminfo, puede usar :wv ( :wviminfo ). Esto guarda el archivo viminfo sin salir de vim de acuerdo con la configuración n anterior. Y también puede hacer :wv SomeOtherFile para guardar en una ubicación que no sea la misma que la configuración en la opción viminfo. Esto puede ser más conveniente que configurar el nombre de archivo para usar al salir, pero no impide que vim use el archivo predeterminado una vez que sale.

Por ejemplo, en el primer vim:

:wv ~/customInfo

y en la segunda terminal:

vim -i ~/customInfo

O, si ya se está ejecutando un segundo vim y desea cargar viminfo:

:rv ~/customInfo

Tenga en cuenta que :wv y :rv no cambian el nombre del archivo que vim guardará al salir ni el nombre del archivo leído durante el inicio.

Información adicional

Descripción de set viminfo+=nSomePath : Usamos el comando set para ajustar la opción llamada viminfo . El += indica que queremos agregar a la opción, no cambiar todo. Agregamos la opción n que especifica el nombre de archivo para viminfo. Inmediatamente después de n tenemos SomePath que será el nombre de archivo utilizado para guardar viminfo.

La documentación de wv ( :help wv ) indica que este comando leerá primero el archivo viminfo y luego fusionará la información anterior con la nueva. Hasta ahora no tengo información sobre cómo funciona la fusión en este caso, pero supongo que mantiene marcas para archivos y registros desconocidos que no están configurados en la sesión actual.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım