Respuestas:
Estoy seguro de que hay otras formas de hacer esto ... pero el comando principal que desea es el :r[ead]
que inserta la salida de un comando en el búfer.
Entonces, para insertar solo el nombre del archivo:
:r! echo %
Y, para incluir la ruta completa:
:r! echo %:p
Para más información:
:help read
:help filename-modifiers
El nombre de archivo actual está en el "%
registro, por lo que puede insertarlo (mientras está en modo de inserción) con <c-r>%
; la ruta completa se puede insertar con <c-r>=expand("%:p")
. Podría hacer una macro si lo usa con frecuencia. Para más, trucos similares, ver :h expand
y :h "=
.
<c-r>
especifica que el siguiente carácter es un registro.
"%p
en modo normal o visual.
Como se puede ver en :h registers
, el "%
registro contiene el nombre del archivo actual. El :pu[t]
comando inserta el contenido de un registro en el texto.
Entonces, para insertar el nombre de archivo real, puede escribir cualquiera de estos, en modo comando:
:put %
o
"%p
Para insertar el nombre de archivo con la ruta completa, escriba
:put=expand('%:p')
en modo comando.
Más información:
:h pu[t]
Al escribir "rp
puede pegar el contenido del registro "r
.
:put "%:p"
no parece funcionar para mí. Parece funcionar solo con expand () , como en:, :put =expand('%:p')
lo que lo hace no mucho menos engorroso que <c-r>=expand('%:p')
desafortunadamente.
Una forma simple es ejecutar:
!!echo %
!!
está reemplazando la línea actual con el resultado del comando que la sigue.
%
se reemplaza por el nombre del archivo editado en el comando para que esto efectivamente inserte ese nombre en el archivo editado.
El nombre de archivo es el que pasó al comando vi (m) y puede contener una ruta relativa o absoluta. Si desea eliminarlo y solo conservar el nombre del archivo, ejecute
!!basename %
Si necesita hacer esto con frecuencia, puede ser útil vincular una secuencia de teclas a lo que desea, según http://vim.wikia.com/wiki/Insert_current_filename
inserta el nombre de archivo actual sin la extensión en la posición del cursor, cuando está en modo de inserción.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Para mantener la extensión use:
:inoremap \fn <C-R>=expand("%:t")<CR>
Para insertar la ruta absoluta del directorio el archivo está en uso:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Para insertar la ruta relativa del directorio el archivo está en uso:
:inoremap \fn <C-R>=expand("%:h")<CR>
Todo lo anterior funciona directamente vim
para la sesión, o puede ponerlo en el .vimrc
(donde los dos puntos iniciales en la línea son opcionales).
Estaba buscando en Google la forma más simple de insertar el nombre del archivo actual (sin ruta o extensión) a la posición actual (sin nueva línea, sin reemplazar la línea actual). Entonces, combinando respuestas anteriores y este enlace , esto es lo que estaba buscando.
En modo de inserción :
<C-R>=expand("%:t:r")
Luego, la próxima vez (con el comando ya en el historial):
<C-R>=<UP>
<c-r>
asignado como comando rehacer?