¿Cómo averiguar qué archivo está abierto actualmente en vim?


61

Esto puede sonar trivial, pero, en más de una ocasión, me he olvidado de qué archivo vimtengo abierto (por ejemplo, cuando estoy buscando diferentes archivos de registro y tal) y la única forma en que supe cómo fue averiguarlo fue cerrar el archivo y busque en el historial de comandos el comando más reciente.

¿Hay un comando dentro de vim para decirle qué archivo ha abierto actualmente sin salir del programa o el archivo que ha abierto (por ejemplo :<which_file_cmd>?)


55
Si no llamó vimcon tantos argumentos, úselo :args.
41754

Respuestas:


76

Además de la respuesta de uprego , puede presionar Ctrl+ G(en modo normal) para obtener el nombre del búfer actual, así como el número total de líneas y su posición actual dentro de él.

Actualizar

Según el comentario de rxdazn , puede presionar 1antes Ctrl+ Gpara obtener la ruta completa del archivo. Si presiona 2, obtiene la ruta completa del archivo y el número de búfer que tiene abierto actualmente (útil cuando ha abierto varios archivos con vim).


Al igual que muchos comandos vim, esto también se aplica al lesscomando que uso cuando veo archivos en lugar de editarlos.
jmathew

18
también, presionando 1 antes de Ctrl + G le da la ruta completa del archivo
rxdazn

23

Cuando en vimsiempre uso el :lscomando.

Ejemplo

:ls
  1 %a   "blah.txt"                         line 1

¿Dónde blah.txtestá el nombre del archivo?


20
:f

da el nombre del archivo actualmente abierto.


1
brillante y muy minimalista
anfibio

7

Cuando vimno se llama con muchos argumentos, :argses útil.


44
El otro problema con esto es que si el archivo se abrió después de que se lanzó vim, no aparecerá en la lista.
Patrick

4

Si puede tener un archivo de configuración vim predeterminado, puede agregar un statuslinepara tener siempre los detalles del archivo disponibles. Entiendo que si constantemente te conectas a diferentes servidores, esto no será de mucha ayuda. Aquí está mi un poco complejo sacado de mi .vimrc.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

Y se ve así en MacVim (pero también funciona en terminales). ingrese la descripción de la imagen aquí

Como siempre, puede hacer :help statuslinepara obtener más opciones y detalles. Y echa un vistazo a Learning Vim the Hard Way, capítulo 17, para obtener una buena explicación de la línea de estado.


Siempre uso statusline también. +1
Rob

1

También hay :echo @%, que le da el nombre del archivo en relación con el directorio actual.


1

Existen innumerables formas de obtener este tipo de información, pero si desea algo para que solo tenga que presionar una tecla y se mostrará el nombre del archivo, inserte lo siguiente en su ~/.vimrc:

map <F4> <ESC>:file<CR>

Esto dice

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

Y el filecomando, como probablemente es aparente, devuelve el nombre del archivo actual junto con otra información.

También puede configurar una línea de estado para que ni siquiera tenga que hacer nada más que mirar.

Para mantener la línea de estado siempre inserte lo siguiente en su ~/.vimrc:

set laststatus=2

Esto le dice a ViM que siempre muestre una línea de estado, otras opciones son 0, para nunca, y 1solo cuando tiene dos o más ventanas abiertas en ViM.


1

Por lo general, solo escribo :e y esto me muestra la ruta completa del archivo y el número de líneas y caracteres también.

Advertencia : vuelve a abrir el archivo desde el disco esencialmente, por lo que es más útil cuando el archivo ya está guardado.

:help :e dice:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.

1

Yo mi vimrc tengo este mapeo

nnoremap <leader>pfn :echo expand('%:p')<CR>

Entonces, si escribo ,pfn, o "imprimir nombre de archivo", se hace eco de toda la ruta del archivo.

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.