¿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?

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.


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.


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.


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>

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.


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.


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


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')),':~')}\ %*

Ambos funcionaron para mí en VIM 7.4 usando iTerm2 para SSH en Ubuntu 16.04 LTS
James Nicholson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.