¿Cómo puedo mostrar la ruta al archivo actual en la línea de comando para escribir un nombre de archivo similar? No quiero una abreviatura que sea reemplazada por el nombre del archivo actual, quiero editar el nombre del archivo, completo con su ruta de directorio. Por ejemplo, quiero :edit
un archivo con un nombre similar, o en un directorio similar, por ejemplo
vim src/submodule/frontend/frobnicate2.c
y ahora quiero editar ../trunk/src/submodule/frontend/frobnicate.c
, y solo quiero insertar ../trunk
y eliminar el 2
, no volver a escribir la ruta completa.
Por supuesto, puedo volver al shell y usar su historial de comandos, o podría copiar y pegar la ruta a través de la GUI, pero estoy buscando una forma más eficiente que no requiera abandonar Vim.
fuente
Ctrl-r =expand('%:p')
. Esto usa el registro = .Si ha configurado su
path
variable vim , tiene todo el poder del:find
comando, es decir, completar con tabulación los nombres de archivo (¡sin necesidad de especificar la parte del directorio!)En tu caso, algo como
puede ser todo lo que necesitas para
:fin frob<tab>
trabajar. Para los detalles morbosos,:help find
,:help file-searching
.fuente
Aquí hay un mapeo que puedes probar:
Esto guarda el comando actual y luego establece el registro 'a' al nombre del archivo actual. Luego, el último comando se recupera y se agrega con el contenido del registro 'a'. Por supuesto, si tiene algo útil en el registro 'a', esto lo sobrescribirá.
Es posible que desee cambiar los caracteres asignados a otra cosa. Me gusta usar la tecla Alt pero no funciona en algunas terminales.
Como Carpetsmoker señaló en su respuesta, puede cambiar la llamada de función a
para forzar el camino completo.
fuente
a
. Pruebe algo como esto en su lugar:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>