Asumiendo que el búfer actual es un archivo abierto para editar, :eno se muestra E32: No file name.
Me gustaría tirar uno o todos de:
- El nombre del archivo exactamente como se muestra en la línea de estado, por ejemplo
~\myfile.txt - Una ruta completa al archivo, p. Ej.
c:\foo\bar\myfile.txt - Solo el nombre del archivo, por ejemplo
myfile.txt

Respuestas:
TL; DR
:let @" = expand("%")>esto copiará el nombre del archivo en el registro sin nombre , luego puede usar el viejo
ppara pegarlo. y, por supuesto, puede asignar esto a una clave para un uso más rápido.:nmap cp :let @" = expand("%")<cr>también puedes usar esto para la ruta completa
:let @" = expand("%:p")Explicación
Vim utiliza el registro sin nombre para almacenar texto que se ha eliminado o copiado (eliminado), del mismo modo que cuando lo pega, lee el texto de este registro.
Usando
letpodemos almacenar manualmente el texto en el registro usando,:let @" = "text"pero también podemos almacenar el resultado de una expresión.En el ejemplo anterior, utilizamos la función
expandque expande comodines y palabras clave. en nuestro ejemplo, usamosexpand('%')para expandir el nombre del archivo actual. Podemos modificarloexpand('%:p')para el nombre completo del archivo.Ver
:help let:help expand:help registerspara más detallesfuente
unnamedpluscomo su uso portapapeleslet @+ = expand("%")"%:h"para obtener la ruta completa sin el nombre del archivo.Casi lo que está pidiendo, y podría hacer:
Ctrl+R %extrae el nombre del archivo actual donde está (símbolo del sistema, búfer de edición, ...). Vea este Consejo Vim para más información.fuente
Ctrl+R %funciona mientras está eninsertmodo, pero eneditmodoCtrl+Rsignifica rehacer.Si desea poner el nombre de archivo del búfer actual en su portapapeles a nivel del sistema, intente cambiar el registro a @ +:
Editar 20140421: Normalmente los uso, así que creé algunos accesos directos. Los Vims de Linux aparentemente funcionan de manera ligeramente diferente a los Vims de Mac , por lo que también hay un caso especial para eso. Si pones lo siguiente en tu
~/.vimrc:Luego, por ejemplo
<leader>cf, copiará la ruta relativa del búfer actual (el líder predeterminado es la barra invertida (\)). A menudo los uso para ejecutar comandos en un archivo o hacer otras cosas en la línea de comandos. Realmente no uso el último nombre de archivo / nombre de directorio a menudo.Puede considerar asignaciones más intuitivas como
<leader>cfrpara relativo,<leader>cfapara absoluto,<leader>cffsolo para nombre de archivo,<leader>cfdpara directorio.fuente
"*y"+son equivalentes, por lo que puede prescindir de las comprobaciones de la plataforma y simplemente usar@+Si lo hace
:reg, verá el nombre del archivo actual en el%registro. Puedes pegarlo con"%p, por ejemplo.Si, como yo, a menudo cambia al búfer 'alternativo', es muy útil que su ruta completa y nombre de archivo se coloquen en el
#registro. Puedes pegarlo con"#p, por ejemplo.Nota (en caso de que este sea un comportamiento específico de mi configuración): estoy usando VIM 7.4.52 en Ubuntu 14.04.4 LTS.
fuente
Combinación de información de un par de otras respuestas: si desea extraer la ruta completa actual a un archivo y colocarla en el búfer de comandos en otra ventana, primero haga
:let @" = expand("%:p"), luego vaya a otra ventana y escribaCtrl+R ".Útil para copiar un archivo mientras permanece en el mismo directorio y mantiene abierto el antiguo. Por ejemplo:
fuente
Aquí está mi solución:
fuente
Uso xclip para acceder al portapapeles de X, así que uso:
fuente