Si sta verificando un comportamento anomalo quando si tenta di eliminare dalla fine delle righe utilizzando la selezione del blocco in vim.eliminazione dalla fine delle righe utilizzando il blocco select in vim
Quindi diciamo che ho un testo come ad esempio:
delete this char:x
and this:x
also this:x
and then this:x
lastly this:x
Se voglio accodare y
per ogni linea che posso:
- iniziale di una selezione blocco con Cv
- select tutte le linee con
4j
- andare a fine linea con
$
- inizio aggiungendo con
A
- tipo il testo desiderato
y
al fine di ottenere:
delete this char:xy
and this:xy
also this:xy
and then this:xy
lastly this:xy
ma se provo a cancellare x
nell'ultimo passaggio invece di aggiungere lo farei aspettarsi di ottenere:
delete this char:
and this:
also this:
and then this:
lastly this:
anche se alla fine con:
delete this char:
and this:x:
also this:x:
and then this:x:
lastly this:x:
Per quanto mi risulta aggiunge dell'ultimo carattere nella prima linea di tutte le altre linee (in questo caso :
) piuttosto che eliminando quelli mancanti (in questo caso x
) .
Posso farlo con macro o sostituti ma non capisco perfettamente la logica di questo comportamento. C'è un modo per farlo con la selezione dei blocchi?
Non capisco il comportamento che descrivi. Il primo 'x' viene rimosso ma non viene aggiunto nulla. – romainl
@romainl stai usando gli stessi esempi della domanda? se stai usando qualcosa come 'delete this char: x' ed elimina' x', aggiunge spazi finali che possono essere facili da perdere .. – none
No, posso vedere gli spazi finali bene e non ce ne sono. In questo contesto, ' {movement} $ A', la rimozione dei caratteri non viene comunque eseguita su ogni riga della selezione. Funziona solo l'aggiunta di caratteri. È un po 'miope, se vuoi la mia opinione, ma è così che è progettato. La rimozione di 'x' alla fine di un intervallo di righe è in genere eseguita con': '<,'> norm $ x' o ':' <,'> s/x $ //'. –
romainl