posizione del cursore dopo aver incollato in vi / vim


11

Una cosa che mi ha sempre infastidito in vi / vim :

Se "strappo" (alias "copia") del testo, quindi mi sposto in un altro punto del file e faccio un "incolla", il mio cursore rimane all'inizio del testo che ho appena incollato. Questo è diverso da quello che fanno gli editor più moderni, che è posizionato il cursore alla fine del testo che ho incollato.

Ad esempio, supponendo che il "buffer di copia" contenga la parola "fantastico" che voglio incollare dopo la parola "an" nella frase:

This is an editor

In, ad esempio gedit , dopo l'incollaggio:

This is an awesome editor
                  ^ Cursor is here

In vi :

This is an awesome editor
           ^ Cursor is here

Posso cambiare vi per comportarmi come (ad esempio) gedit in questo senso?


Ciò che è ancora più strano, all'elenco con la mia versione di Vim: se il testo strappato si estende su più di una riga, il cursore viene lasciato all'inizio del testo incollato, altrimenti viene lasciato alla fine del testo incollato.
Alexey,

scusa, almeno
Alexey il

Risposte:


12

In vim, usa gpe gPinvece di pe Pper lasciare il cursore dopo il testo incollato. Se vuoi scambiare i binding, inserisci le seguenti righe nel tuo .vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

Stranamente, in vim, pe Plascia il cursore sull'ultimo carattere incollato per un buffer di caratteri, anche in modalità compatibile.

Non so come cambiarlo in altre versioni di vi.


1
Penso che "vi" di solito sia davvero "vim" nella maggior parte delle distro, giusto?
JoelFan,

@JoelFan: la maggior parte delle distro Linux non incorporate, forse. Altrove, no. Se stai bene con una soluzione solo vim, non mettere in gioco vi: il 99% della configurabilità di vim non è in vi di base.
Gilles 'SO- smetti di essere malvagio' il

Che ne dici di "nvi"? Sono confuso su tutti i diversi vi. Sono per lo più interessato a debian e ubuntu
JoelFan il

1
@JoelFan: nvi è un vi piuttosto semplice, mira alla compatibilità con l'implementazione originale e niente di più. Se sei interessato solo a installazioni desktop o server in cui puoi installare facilmente programmi, puoi presumere che vim sia disponibile. La familiarità con implementazioni minori vi è utile solo su server bloccati e dispositivi incorporati.
Gilles 'SO-smetti di essere malvagio' il

1
Uso "vi" principalmente per server, dove posso installare cose, sì
JoelFan il

0

Sono abbastanza sicuro che questo sia di progettazione. Se si incolla usando "p" (minuscola P), dovrebbe incollare dopo la posizione o la linea corrente. Tuttavia, se si incolla utilizzando "P" (P maiuscola), si incolla prima della posizione o della linea corrente. Se il comportamento che desideri è avere il cursore alla fine del testo appena incollato, prova a prendere l'abitudine di usare "P" anziché "p".

Scommetto che se hai scavato abbastanza in profondità, potresti trovare una ricetta vim da inserire nel tuo .vimrc che sposterebbe sempre il cursore alla fine del tuo incolla, anche se usi "p".


2
Plascia il cursore all'inizio del testo incollato in vi (almeno in nvi e per POSIX).
Gilles 'SO- smetti di essere malvagio' il

p e P influenzano la posizione dell'inserto rispetto al testo circostante. non influenzano la posizione del cursore stesso che è sempre nella stessa posizione rispetto al testo inserito.
eMBee
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.