Existe alguma maneira de fazer o símbolo especial %
funcionar com nomes de caminho na linha de comando? Por exemplo, eu gostaria de fazer:
:diffsplit Path\to\other\directory\%
Para que eu possa fazer uma @:
comparação rápida de arquivos com o mesmo nome. No entanto, isso apenas abre um novo buffer chamado %
.
Claro que eu poderia fazer:
:exe 'diffsplit Path\to\other\directory\'.expand('%')
Mas isso é complicado, pois não consigo tabular diretórios completos ao digitar o comando.
Existe alguma outra maneira melhor de fazer isso?
Aqui está uma pergunta relacionada , mas não trata exatamente da minha situação.
Editar: Apenas para esclarecer, eu gostaria de poder reutilizar o comando exatamente para arquivos diferentes. Portanto, uma solução que simplesmente preenche automaticamente o arquivo atual na linha de comando não funcionará. O mesmo comando precisa funcionar para nomes de arquivos diferentes .
fonte
%
, ele será preenchido com o nome do arquivo, mas quando eu quiser reutilizar essa linha, o nome do arquivo antigo ainda estará presente. Eu gostaria que o% inserisse dinamicamente o nome do arquivo atual, seja lá o que acontecer no momento, sem precisar redigitá-lo.:diffsplit Path/to/other/directory/%:t
Respostas:
Caracteres especiais (consulte
:h cmdline-special
) e modificadores de nome de arquivo (consulte:h filename-modifiers
) são expandidos na linha de comando, portanto:fonte
Acontece que é um problema estúpido do Windows. O remédio para isso é simplesmente usar barras no nome do caminho. ou seja,
:diffsplit Path/to/other/directory/%
funciona muito bem.Corrigi isso no meu sistema usando a opção
set shellslash
que usa como padrão barras invertidas, mesmo no Windows.fonte
%
e é o separador de caminho padrão no Windows. Vim não sabe dizer o que você tinha em mente.directory\\%
mas isso ainda não funcionava. IDK, mas acho que não importa, já que as barras resolvem o problema.Não sei se está tudo bem para você:
Apenas mais uma tecla no original, a
<C-r>
, para preencher o%
valor do registro.fonte
@:
de arquivos futuros, pois "codifica" o nome do arquivo atual.:Mydiff /path/to/there/
para que o caminho seja preenchido com tabulação. basta passar isso para o seu comando / função com #exec