Vim mantiene un historial de comandos ex (accesible a través de :↑y q:), y ese historial persiste después de salir.
Si ejecuto varias instancias de Vim (mismo usuario, mismo directorio de inicio), ¿cómo arbitra Vim entre los historiales de comandos? Parece que el último proceso para salir gana. ¿Hay alguna manera de mantener el historial de comandos de todas las instancias?
command-line
command-history
persistent-state
200_success
fuente
fuente
~/.viminfo
propiedad sea suya . Un error común es que la gente ejecute losudo vim ...
que, si no ha ejecutado vim como su propio usuario antes, se creará~/.viminfo
como root. Si ese es el problema, sugeriría aprender a usarsudoedit
osudo -e
editar archivos privilegiados.chown
Me devolví mi .viminfo a mí mismo y lo arreglé. (No sabe cómo su propiedad se cambió a raíz, ya que siempre he usadosudoedit
, pero bueno.)Respuestas:
La respuesta a su pregunta sobre el título es lo que observó. Del manual de usuario de vim
:help 21.3
Sin embargo, el nombre de archivo del archivo viminfo (donde se almacena el historial de comandos, entre otras cosas, como marcas globales y contenido de registro, si está configurado) es modificable. Esto significa que puede configurar diferentes 'historias' para diferentes proyectos o instancias de vim. Suponiendo que no ejecute más de una instancia de vim por proyecto, administrar el nombre de archivo de viminfo a través de vimrc (u otro complemento de configuración del proyecto) es una excelente manera de manejar esto.
Configurar archivos alternativos de viminfo
Para la gestión a 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, podría tener líneas en su vimrc que detecten un directorio particular como perteneciente a un proyecto.
Un ejemplo de tener vimrc establece automáticamente esto basado en el directorio:
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 una información alternativa alternativa 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 a la opción viminfo como se indicó anteriormente antes de salir. Luego, para cargar el historial, inicie vim con la opción -i
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 es 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 primer vim:
y en la segunda terminal:
O, si ya se está ejecutando un segundo vim y desea cargar el viminfo:
Tenga en cuenta que
:wv
y:rv
no cambie el nombre del archivo vim se 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 nombradaviminfo
. El+=
indica que queremos agregar a la opción, no cambiar todo. Anexamos lan
opción que especifica el nombre de archivo para viminfo. Inmediatamente después den
que tengamosSomePath
cuál será el nombre de archivo utilizado para guardar viminfo.La documentación para
wv
(:help wv
) indica que este comando primero leerá el archivo viminfo, luego combinará entre información antigua y 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 establecidos en la sesión actual.fuente