Come passare il nome del file corrente con un percorso diverso alla riga di comando


8

Esiste un modo per far funzionare il simbolo speciale %con i nomi dei percorsi sulla riga di comando? Ad esempio, vorrei fare:

:diffsplit Path\to\other\directory\%

In modo che io possa fare un @:confronto rapido dei file con lo stesso nome. Tuttavia, questo apre solo un nuovo buffer chiamato %.

Certo che potrei fare:

:exe 'diffsplit Path\to\other\directory\'.expand('%')

Ma questo è ingombrante poiché non riesco a visualizzare le directory complete durante la digitazione del comando.

C'è un altro modo migliore per farlo?

Ecco una domanda correlata , ma non affronta esattamente la mia situazione.

Modifica: solo per chiarire, vorrei poter riutilizzare il comando esattamente per file diversi. Pertanto, una soluzione che riempie semplicemente automaticamente il file corrente nella riga di comando non funzionerà. Lo stesso comando deve funzionare per nomi di file diversi .


È possibile utilizzare un cmap per% in modo che si espanda al nome file, il che potrebbe aiutare: D
SibiCoder

Questo ha lo stesso problema della soluzione di Kent. Non appena si preme %, si riempirà il nome del file, ma quando voglio riutilizzare quella riga, il vecchio nome del file sarà ancora presente. Vorrei che% inserisse dinamicamente il nome del file corrente, qualunque cosa accada al momento senza doverlo digitare nuovamente.
Tumbler41,

2
:diffsplit Path/to/other/directory/%:t
Sato Katsura,

Wow, pensavo di averlo provato, ma hai ragione, funziona! Grazie! Se vuoi inserirlo in una risposta, lo accetterò.
Tumbler41,

Risposte:


10

Caratteri speciali (vedi :h cmdline-special) e modificatori di nome file (vedi :h filename-modifiers) vengono espansi sulla riga di comando, quindi:

:diffsplit Path/to/other/directory/%:t

1

Quindi si scopre che è uno stupido problema di Windows. Il rimedio a questo è semplicemente usare le barre in avanti nel nome del percorso. cioè :diffsplit Path/to/other/directory/%funziona bene.

Ho risolto questo problema sul mio sistema utilizzando l'opzione set shellslashche utilizza per impostazione predefinita le barre in avanti anche su Windows.


Sì, la barra rovesciata viene utilizzata sia per sfuggire al significato speciale di %, sia come separatore di percorso predefinito su Windows. Vim non sa cosa avevi in ​​mente.
Ingo Karkat,

Vedi, ci ho pensato. Quindi ho pensato che avrei potuto semplicemente fare un directory\\%ma che comunque non funzionava. IDK, ma suppongo che non abbia importanza poiché le barre in avanti risolvono il problema.
Bicchiere 41

0

Non so se questo è ok per te:

:diffsplit Path/to/somewhere/<c-r>%

Basta un altro tasto per scrivere l'originale, il <C-r>, per riempire il %valore del registro.


Ciò non consente ancora l'utilizzo @:per i file futuri in quanto "codifica" il nome del file corrente.
Tumbler41,

quindi avvolgere un comando personalizzato in :Mydiff /path/to/there/modo che il percorso possa essere completato con la scheda. passa questo al tuo comando / funzione conexec
Kent,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.