Nombre para mostrar del archivo actual en vim?


157

¿Cómo muestra el nombre de archivo del archivo en el que está trabajando en vim?


1
Si su terminal está configurada correctamente, debe obtener el nombre del archivo en el título de la ventana.
Cascabel



2
ctrl + g es puede mostrar la información del archivo
Dhiren Hamal

Respuestas:


200

:f( :file) hará lo mismo que <C-G>. :f!dará una versión no truncada, si corresponde.


2
Bien, pero ¿es posible mostrarlo en la barra superior de la terminal? (o terminador) o en algún lugar sin escribir un comando.
eMarine

21
:f!no siempre funciona, presione 1, luego Ctrl-G para la ruta completa.
ives

1
¿Qué tal un camino completo? Cuando inicio vim desde ~/dev/file.pyy ejecuto :fdentro de vim, obtengo file.pycomo salida en lugar de ~/dev/file.py.
gxyd

1
@ives, ¿qué significan 1 y Ctrl + g por separado?
jobima

2
@jobima: se modifica ctrl-gpara devolver ruta + archivo. :fdevolverá el nombre del archivo sin ruta, como podría ctrl-g. Un 1antes ctrl-gmostrará la ruta y el nombre (aunque no necesariamente se expande). es decir, se mostrará en ~/dev/file.pylugar de file.py. 2seguido por ctrl-gincluirá que buffer: buf 1: "~/dev/file.py".
ives

71

ctrl+ glo hará.

Además, me gusta tener:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Que produce:

foo.c [C] [0x23] <código / foo.c 1, 1 2% de 50

Además, como alguien mencionado (pero ahora eliminado) %será reemplazado con el nombre de archivo actual. Por ejemplo:

:! echo "archivo actual:%"
archivo actual: foo.c
Presione ENTRAR o escriba comando para continuar

2
¿Qué significan las partes [C]y [0x23]?
LangeHaare

@LangeHaare Tipo de archivo y valor hexadecimal del carácter debajo del cursor respectivamente

'statusline'es una cadena, pero no incluye comillas en el conjunto: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linestambién necesita espacios escapados
D. Ben Knoble

18

establecer la línea de estado. más información con:help statusline

Estos comandos pueden ir en su archivo .vimrc, o puede ingresarlos como comandos mientras está en vim escribiendo ':' en modo comando.

Primero, establezca el último estado en 2 usando lo siguiente:

set laststatus=2

Luego establezca la línea de estado en% f para el nombre de archivo corto.

set statusline=%f

Para la ruta completa al archivo, use% F.


E518: Opción desconocida:% f
Isius

He actualizado la respuesta, Isius. Esperemos que eso lo aclare más.
Brian Clements

5

:set title para mostrar el nombre del archivo en la barra de título de la ventana.


5

¿Por qué tan complicado? Control-G hará el trabajo


4

Para mostrar la ruta completa de cualquier archivo, incluidos los enlaces simbólicos resueltos, utilice lo siguiente.

:echo resolve(expand('%:p'))

Esto se puede agregar a su barra de estado agregando la siguiente línea a su ~./vimrc

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

2

Una de las sugerencias anteriores tuvo que cambiarse a

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

para que funcione también

set laststatus=2

se utilizó.


¡Bienvenido a Stack Overflow ! Probablemente debería tratarse de una edición o comentario sugerido sobre la (s) respuesta (s) relevante (s): aún no tiene la reputación suficiente para comentar o editar, pero pronto lo hará si hace buenas preguntas y escribe buenas respuestas. Mientras tanto, sugeriré las soluciones relevantes a los autores de las respuestas. ¡Buena atrapada!
D. Ben Knoble

1

Yo uso lo increíble vimrcde amix: https://github.com/amix/vimrc

Utiliza el lightline.vimpluging y muestra el nombre del archivo en la barra de estado.

Lo mejor de usar amix/vimrces que este complemento se encarga de la mayor parte de la personalización, es muy estable y ha sido probado por miles de personas, como puedes comprobar observando la cantidad de estrellas github ... y los problemas poco frecuentes.

También se actualiza con bastante frecuencia.

PD: no es el autor de ninguno de los complementos ... solo un fan :)


1

También necesitaba poner esto en mi archivo .vimrc:

set noruler
set laststatus=2

Entonces podría poner algo como set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"en mi archivo .vimrc y después de reiniciar mi terminal, la línea de estado se muestra correctamente.


'statusline'es una cadena, pero no incluye comillas en el conjunto: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linestambién necesita espacios escapados
D. Ben Knoble
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.