¿Cómo puedo ver la ruta completa del archivo actual?


123

Cuando estoy editando un archivo en Vim, ¿hay un comando para ver la ruta del archivo actual? A veces esto es muy útil si hay varios archivos con el mismo nombre en un proyecto.

Respuestas:


143

Puedes presionar {count}Ctrl-G:

{count}CTRL-G       Like CTRL-G, but prints the current file name with
                    full path.  If the count is higher than 1 the current
                    buffer number is also given.

Al presionar 1seguido de Ctrl+ se Gmuestra la ruta completa del archivo actual. Si {count}es mayor que 1, también se mostrará el nombre del búfer.

(Al presionar solo Ctrl+ se Gmuestra la ruta relativa al directorio de trabajo actual de Vim, como lo señaló Jasper en los comentarios).

Puede usar el siguiente comando en su .vimrcpara agregar la ruta completa a la línea de estado, para que siempre esté visible:

set statusline+=%F

44
¿No es Ctrl+Gmás como 'ruta relativa a cwd de vim'?
Jasper

@Jasper Buena captura! Se actualizó la respuesta.
thameera

44
Parece que C-ges el valor predeterminado para 0C-g, y además 2C-gmuestra el número de índice del búfer (a partir de 1).

¡Estoy tan feliz de ser el centésimo en votar tu respuesta! Gracias por esto 1C-g!
bóveda

53

El registro %contiene el nombre del archivo actual.

Se podrían ingresar los siguientes comandos para mostrar la información mostrada:

:echo @%                |" directory/name of file
:echo expand('%:t')     |" name of file ('tail')
:echo expand('%:p')     |" full path
:echo expand('%:p:h')   |" directory containing file ('head')

Si todo lo que se desea es mostrar el nombre del archivo actual, escriba :f/ :lso presione Ctrl- g(para la ruta completa presione 1entonces Ctrl- g).

En el modo de inserción, escriba Ctrl- rluego %para insertar el nombre del archivo actual.

Los siguientes comandos insertan líneas que consisten en la ruta completa de los archivos actuales y alternativos en el búfer:

:put =expand('%:p')
:put =expand('#:p')

Fuente: Obtenga el nombre del archivo actual en vim wikia

Relacionado:


2
Puede valer la pena señalar que también se puede usar esas =expand...expresiones después Ctrl-Rcuando se encuentra en modo de inserción, también.
dash-tom-bang

22

Puede usar :!ls %:ppara obtener la ruta completa al archivo actual.

Dependiendo del contexto ex, %significará el contenido del archivo o el nombre del archivo. Cuando se excluye, representa la ruta del archivo en relación con el directorio actual. El comando ' %:p' agregará el modificador de nombre de archivo de ruta completa a %.

Hay algunos otros modificadores de nombre de archivo interesantes como:

  • :~: Obtenga la ruta del archivo relativa al directorio de inicio (este no me funcionó por alguna razón)
  • :.: Obtener la ruta del archivo relativa al directorio actual ( %predeterminado)
  • :r: Nombre del archivo raíz. El nombre del archivo sin la extensión.
  • :e: Extensión del archivo.
  • :h: Se divide /y devuelve la mitad izquierda (es decir, si estoy editando un archivo en una ruta /tmp/test.txty ejecuto %:p:h, volverá/tmp
  • :t: Dividir /y devolver la mitad derecha (es decir, si estoy editando un archivo en una ruta de acceso /tmp/test.txty la ejecución %:p:tvolverátext.txt

Creo que quisiste decir%: p: t devolverá text.txt
John O'M.

@ JohnO'M. Sí, así es, gracias: D. Fijo.
CharlesL

7

Se puede ver el directorio de trabajo actual con :pwd. Por supuesto, este es solo el directorio, y no el nombre del archivo. Para obtener el directorio de trabajo y el nombre de archivo, podemos usar el registro especial %, que contiene información sobre el archivo actual.

Si lo usa :echo @%, obtendrá el directorio y el nombre de archivo del archivo actual.
Si lo usa :echo expand('%:p'), obtendrá la ruta completa y el nombre de archivo del archivo actual. Esto es muy similar a la respuesta de CharlesL .

Recuerdo éste, sin embargo, porque si se utiliza la ayuda de Vim :h expand, a continuación, se menciona que %y %:py sus familiares.



3

Para mostrar la ruta completa de todos los archivos, incluidos los enlaces simbólicos resueltos, use lo siguiente.

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

3

Hay muchas mejores respuestas, pero si (por alguna razón) desea utilizar el shell para obtener la ruta completa del archivo (esto es más útil si va a realizar alguna otra operación en el archivo con el shell), en un sistema similar a Unix podrías ejecutar:

:!realpath %

o:

:'<,'>!realpath %

para insertar la ruta en el documento sobre la selección actual.

Registrarse %siempre contiene el nombre del archivo. Un ejemplo del mundo real podría ser si está editando un archivo de configuración, pero no tiene permisos de escritura (y no desea ejecutar Vim como root), puede editar el archivo y luego ejecutar:

:w ! sudo tee %

para guardar el archivo (un poco fuera de tema, pero es un buen ejemplo de lo que se puede hacer con el %registro).


realpathno es POSIX, por lo que podría ser más fácil de hacer:!echo "$PWD/%"
Muru

Convenido; buena llamada.
Sam Whited

2

Debe configurar su línea de estado para que se pueda ver y también establecerla en la ruta. Lo hice permanentemente agregando las dos líneas a continuación a mi ~ / .vimrc

set laststatus=2
set statusline+=%F

Si solo quieres ejecutar eso una vez. Entonces cuando VIing un tipo de documento

:set laststatus=2       <ENTER>
:set statusline+=%F     <ENTER>

1
Esta es la misma respuesta que la hecha por thameera sobre la misma pregunta.
statox


1

Puede mostrar la ruta completa del archivo que está editando en la barra de título, que es una forma conveniente de mostrar la ruta del archivo en mi opinión.

Para hacerlo, debe configurar la titleopción y titlestring. Actual Estoy usando la siguiente configuración:

set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}

Mostrará el nombre de host de Vim, luego la ruta completa del archivo y seguido de la última hora de modificación del archivo. Vea la figura a continuación para una demostración

ingrese la descripción de la imagen aquí