¿Hay alguna forma de hacer que el símbolo especial %
funcione con los nombres de ruta en la línea de comando? Por ejemplo, me gustaría hacer:
:diffsplit Path\to\other\directory\%
Para poder hacer una @:
comparación rápida de archivos del mismo nombre. Sin embargo, esto solo abre un nuevo buffer llamado %
.
Por supuesto que podría hacer:
:exe 'diffsplit Path\to\other\directory\'.expand('%')
Pero esto es engorroso ya que no puedo tabular directorios completos al escribir el comando.
¿Hay alguna otra mejor manera de hacer esto?
Aquí hay una pregunta relacionada , pero no aborda mi situación exactamente.
Editar: solo para aclarar, me gustaría poder reutilizar el comando exactamente para diferentes archivos. Por lo tanto, una solución que simplemente complete automáticamente el archivo actual en la línea de comando no funcionará. El mismo comando debe funcionar para diferentes nombres de archivo.
fuente
%
, se rellenará con el nombre del archivo, pero cuando quiera volver a usar esa línea, el nombre del archivo antiguo seguirá presente. Me gustaría que el% inserte dinámicamente el nombre de archivo actual, sea lo que sea en ese momento sin tener que volver a escribirlo.:diffsplit Path/to/other/directory/%:t
Respuestas:
Los caracteres especiales (ver
:h cmdline-special
) y los modificadores de nombre de archivo (ver:h filename-modifiers
) se expanden en la línea de comando, por lo que:fuente
Entonces resulta que es un estúpido problema de Windows. El remedio para esto es simplemente usar barras diagonales en el nombre de la ruta. es decir,
:diffsplit Path/to/other/directory/%
funciona bien.He remediado esto en mi sistema usando la opción
set shellslash
que por defecto usa barras inclinadas incluso en Windows.fuente
%
, y es el separador de ruta predeterminado en Windows. Vim no puede decir cuál tenías en mente.directory\\%
pero que todavía no funcionaba. IDK, pero supongo que no importa, ya que las barras diagonales resuelven el problema.No sé si esto está bien para ti:
Solo una tecla más a su original, la
<C-r>
, para completar el%
valor de registro.fuente
@:
para archivos futuros ya que "codifica" el nombre del archivo actual.:Mydiff /path/to/there/
para que la ruta se pueda completar con pestañas. solo pasa esto a tu comando / función conexec