Normalmente trabajo con 2 ventanas, divididas verticalmente.
El problema que me gustaría resolver es: saltar fácilmente desde el archivo de implementación de encabezado <->
Estoy investigando, sin suerte, 2 formas de hacer esto:
- Abrir archivo alternativo en la ventana actual : hay muchas maneras de hacer esto, sin embargo, no puedo encontrar una forma de recordar dónde estaba en el archivo anterior (es decir, saltar al encabezado, saltar hacia atrás, pero no al mismo lugar donde estaba) )
- Abra un archivo alternativo en la otra ventana : está bien definido, ya que solo trabajo con 2 ventanas, sin embargo, no tengo el conocimiento vim para hacerlo.
vim-windows
zach
fuente
fuente
:h line()
(solución genérica): "Este comando automático salta a la última posición conocida en un archivo justo después de abrirlo, si la marca '" está establecida:: au BufReadPost * if line ("' \ "")> 1 && line ("'\" ") <= line (" $ ") | exe "normal! g` \" "| endifRespuestas:
Hay tres pasos principales para lograr lo que estás pidiendo:
Para encontrar el nombre de archivo alternativo, desea dividir el nombre del archivo actual en la "raíz" y la "extensión". Una forma simple de hacer esto es:
Si sabe que sólo ha vuelto a la interfaz entre
.h
y.cpp
archivos, puede cambiar la extensión de una a otra con facilidad:Alternativamente, cree un diccionario que asigne extensiones conocidas a extensiones alternativas potencialmente válidas. O use
globpath()
para obtener todas las alternativas posibles para el archivo actual:y elige el primero, o lo que sea. Prefiero el
globpath
enfoque, con algunos conocimientos adicionales que describiré más adelante. Una vez que haya elegido la extensión de destino, forme la ruta de destino completa:Ahora puede abrir el archivo alternativo en la ventana actual:
O use
winnr()
para obtener el número de "otra ventana" (winnr("#")
es la ventana a la que<C-W>p
saltaría, o puede codificarlo si sabe que siempre será el mismo para su configuración) y hacer algo como:Esto le brinda una solución realmente básica para abrir archivos alternativos. Hay algunas deficiencias con el enfoque anterior, ya que lo escribí para ser sencillo y está un poco fuera de lugar. He escrito un complemento que alterna el cambio de archivos "de la manera que quería" (recorriendo todos los
globpath()
resultados disponibles ). Aborda algunos de los problemas con la simplicidad de lo anterior, puede consultar su implementación si está interesado en explorar más.Finalmente, el punto "restaurar la posición del cursor". Lo guardé para el final ya que es ortogonal a la cosa de cambio alternativo (mi plugin no lo maneja, por ejemplo), pero podría ponerlo en su función si va a rodar el suyo.
:help line()
tiene un comando automático que es útil para restaurar la posición del cursor donde estaba cuando se abrió el archivo por última vez:Acabo de poner eso, o algo muy similar, en mi
.vimrc
puesto que prefiero el comportamiento todo el tiempo. Sin embargo, podría simplemente poner el código en otro lugar.fuente
Puede usar el complemento vim-fswitch junto con la siguiente configuración en su
.vimrc
archivo:Si escribe
<Leader>
(que es\
por defecto), seguido des
una.hpp
o.h
archivo, el plugin comprobar si una coincidencia.cpp
,.cc
o.c
el archivo existe:include
porsrc
en la ruta del archivo actualsrc
carpeta sobre el archivo actualHay más opciones que podría usar para ajustar mejor su proyecto en la documentación . Te llevará unos minutos, pero una vez que lo hagas bien, deberías amarlo. Personalmente, lo encuentro muy flexible y extensible, además funciona igual de bien para muchos tipos de archivos (.m, .h, .inl, etc.).
fuente
En tus
.vimrc
Esto le permite moverse rápidamente entre ventanas, simplemente usando las teclas de dirección Ctrl y VIM desde la fila de inicio. Lo sorprendente de esto es que tiene una forma común de saltar a cualquier ventana, incluida la ventana de corrección rápida.
Para cambiar rápidamente entre el encabezado y la fuente que uso, se
vim-scripts/a.vim
encuentra aquí: https://github.com/vim-scripts/a.vim , use el:A
comando para alternar.Nota al margen => Si usa tmux, puede usar https://github.com/christoomey/vim-tmux-navigator para saltar entre las ventanas vim o nvim y un terminal sin problemas.
fuente
Solo compartiré mi versión súper rápida y sucia ...
Configurar mis asignaciones; alt-o abre el archivo relacionado en la misma ventana, alt-shift-o se abre en una división ...
Luego tengo una función que obtiene la lista de archivos relacionados. He tenido la intención de ajustarlo para cortar el nombre del archivo en el primer punto en lugar del último, pero eso sigue siendo un ejercicio para el lector.
Mi configuración .vimrc a veces se especializa por cliente; algunos tienen fuente e incluyen jerarquías de carpetas separadas, algunos los tienen juntos. Por defecto, supongo que están todos cerca, pero si necesito cazar, proporcionaré una función de reemplazo como esta.
Luego miro a través de esa lista de archivos para encontrar el archivo del búfer actual y pasar al siguiente de la lista. No suele ser tan simple como un par .cpp / .h, a menudo tendré que considerar otras cosas.
Y finalmente, las dos funciones que se abren en la ventana actual o se dividen ...
Mi versión de división siempre coloca los archivos .cpp y .c en una división por debajo, de lo contrario, se divide por defecto (que en mi caso está arriba).
fuente