Vai alla fine di `===` ma non includere `$`


0

Considera le seguenti righe di esempio:

$some ==thing();
$some == thing();

$some ==$thing;
$some == $thing;

Sto scrivendo una macro per migliorare queste righe. Con il cursore sullo spazio successivo $some, vorrei aggiungere uno spazio dopo l'ultimo segno = se non esiste già uno spazio. Il ecomando porta il cursore alla fine di entrambi i caratteri =e $. Cioè, per le stringhe =, ==e ===quindi eporta il cursore sull'ultimo =carattere. Tuttavia, per le corde =$thing, ==$thinge ===$thingpoi eporta il cursore sul $carattere. Pertanto, non posso fare affidamento su nessuno dei due io ainserire correttamente uno spazio dopo i =personaggi.

Come posso spostare il cursore sull'ultimo =carattere rilevante in modo affidabile? Nota che potrebbero esserci altri =personaggi più avanti nella riga.


C'è un motivo specifico che si preoccupano te stesso con la creazione di una macro quando si può semplicemente utilizzare sed in questo modo: %s/=\ //g?
Erathiel,

Risposte:


2

Invece di usare il ecomando motion, puoi cercare la fine di una stringa di =caratteri:

/=\+/e

(Se preferisci sfuggire al letterale =anziché al meta +, allora puoi usare /\v\=+/e.)


Grazie! Non mi rendevo conto che si potesse avere il cursore sulla fine di una stringa cercata, in effetti ho cercato questa funzione in passato.
dotancohen,

2

Il comportamento che stai descrivendo è perché entrambi =e $non sono configurati come caratteri di parole chiave , quindi il emovimento si sposta su istanze di entrambi. Per ottenere l'effetto desiderato, modificare la definizione della parola chiave (temporaneamente?) Tramite

:setlocal iskeyword+=$

Nota che preferirei risolverlo non con movimenti espliciti e una macro, ma piuttosto con un :substitutecomando, in quanto puoi esprimere meglio i luoghi delle modifiche desiderate con espressioni regolari.


Grazie, proverò la definizione della parola chiave. Sto cercando soluzioni su cui poter sviluppare ed espandere, il substitutecomando non sembra supportare tutto ciò che vorrei fare.
dotancohen,
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.