¿Cómo puedo mostrar permanentemente la ruta del archivo actual en Vim?

91

Sé que CTRLgmuestra el archivo actual en el que está trabajando. ¿Hay alguna forma de modificar mi .vimrcpara que el nombre de archivo / ruta siempre se muestre?

Zallarak
fuente

Respuestas:

129

En su línea de estado, agregue a %Fpara mostrar la ruta completa:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Tenga en cuenta %Fque será la ruta completa. Para obtener una ruta relativa al directorio de trabajo, use %f.

Si su línea de estado aún no está visible, es posible que primero deba configurarla para que esté siempre visible, a través de laststatus=2

set laststatus=2

Vea :help laststatusqué significan las opciones. Normalmente, la línea de estado puede estar oculta u oculta a menos que haya varios búferes abiertos, pero me parece extremadamente útil tenerlo todo el tiempo con personalizaciones como esta, vale la pena renunciar a una reserva de línea de pantalla.

Michael Berkowski
fuente
1
Ciertamente prefiero tu respuesta a la mía, pero agregar set statusline+=%Fa mi ~/.vimrcno parece hacer lo que dices. Aunque los médicos ciertamente parecen estar de acuerdo contigo ...
Tim Pote
1
Esto no tuvo ningún efecto. Disculpas si me estoy perdiendo algo simple, ¿tienes alguna idea al respecto?
zallarak
1
@TimPote ¿Qué versión de vim? Funciona para mi. Tal vez su línea de estado ya la esté empujando o limitando el ancho. Pruébelo :set statusline=%Fsin el+
Michael Berkowski
@zallarak Vea mi comentario a Tim. ¿Su línea de estado cambia si simplemente lo hace :set statusline=%F? Mire hacia la derecha o hacia la izquierda para ver si el nombre del archivo se esconde allí en la línea de estado
Michael Berkowski
2
@TimPote Quizás set laststatus=2para mantener la línea de estado visible todo el tiempo. Olvidé que tenía eso puesto.
Michael Berkowski
20

establecer ls = 2

agregue esto en vimrc, y verá el nombre del archivo en la parte inferior siempre.

DAKOTA DEL SUR.
fuente
set modeline no hizo nada por mí, ¿qué se supone que debe hacer? (set ls = 2 hizo algo). ¿Cómo puedo ayudar / ayudar a resolver esto por mi cuenta la próxima vez? ¡Gracias! :)
Charlie Parker
1
set modelinees un poco peligroso y no tiene nada que ver con la pregunta. Permite la ejecución de comandos de Vim en las 5 líneas iniciales / finales de un archivo. Solo deben activarlo aquellos que saben por qué y realmente quieren esto. (Es por eso que -1 esta respuesta)
DrBeco
16

Encontré 2 formas de mostrar la ruta del archivo en la barra de título del gnome-terminal mientras editaba un archivo con Vim.

La forma más simple (y mejor): agregue la siguiente línea a su ~/.vimrc:

set title

Que te mostrará en la parte superior:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

La forma más complicada le mostrará la ruta absoluta del archivo. Está documentado con un poco más de detalle en esta publicación de blog que escribí recientemente.

sampson-chen
fuente
El "título del conjunto" mostrará el nombre del archivo en la pestaña del terminal. Característica interesante.
duleshi
Por interesante que sea, no responde a la pregunta formulada. También afirma que es mejor, pero puede que no lo sea. Por ejemplo, si su vim está abierto en una terminal que está en modo de pantalla completa, el título no es visible. Por lo tanto, votar en contra.
apprenticeDev
8

La única manera que encontré para obtener la ruta completa del archivo en el que estoy trabajando es: :echo expand('%:p'). Puede volver a mapear ctrl + g si lo desea, pero personalmente no me gusta alejarme demasiado de los estándares. He mapeado F7 así:

map  <F7> <Esc>:echo expand('%:p')<Return>
Tim Pote
fuente
4
:help CTRL-Gy busque dos párrafos hacia abajo CTRL-Gcon count.
Stefan Majewsky
1
Gracias, @StefanMajewsky. 1 CTRL-Gmuestra el nombre completo del archivo. Estaba buscando esta opción.
Anton Kiselev
Te amo Tim, esta es la única manera de mostrar absolutamente el camino absoluto, incluso sin él ~.
Ryancheung
7

Si está usando vim-airlines , ingrese .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Esta es una modificación del valor predeterminado de la aerolínea, que cambia %fpor %F.

Phcerdan
fuente
6

Siempre lo he usado :f, ¡pero la respuesta y los enlaces de @MichaelBerkowski son increíbles!

:f muestra la ruta, el recuento de líneas, el estado modificado, la posición actual del cursor y más ...

No lo sabía, CTRLGpero parece ser lo mismo.

jahroy
fuente
5

Creo que la línea de estado es muy poderosa y útil. Fuera de la caja, mostrará el nombre del archivo, la posición del cursor y algunas banderas. Pero quieres hacer lo mismo que yo y reemplazar el nombre de archivo -part con la ruta completa al archivo.

Entonces, al editar mi .vimrclínea de estado, podría verse algo así como predeterminado:

.vimrc                                                        26,16           7%

Puede ver la configuración de la línea de estado con:

:set statusline?

Pero si no ha hecho ninguna alteración y ningún módulo lo ha cambiado, estará vacío. Pero por los ejemplos en la sección de ayuda ( :help statusline), podría encontrar que el valor predeterminado es:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Así que incluye esto en tu .vimrcy cambia %fa %F. También agregué el indicador de tipo de archivo ( %y) a mi línea de estado, ya que lo encuentro conveniente. Entonces mi configuración resultante se ve así:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

Y el resultado se vería así:

~/.vimrc [vim]                                                26,16           7%

Buena lectura:

PD. Ejecuto vim 7.3

UlfR
fuente
4

Si desea que la ruta incluya enlaces simbólicos resueltos, utilice lo siguiente:

set statusline +=%{resolve(expand('%:p'))}\ %*

Para mantener la abreviatura '~' de su directorio personal, incluya fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
joelostblom
fuente
Ambos funcionaron para mí en VIM 7.4 usando iTerm2 para SSH en Ubuntu 16.04 LTS
James Nicholson