posición del cursor después de pegar en vi / vim

11

Una cosa que siempre me ha molestado en vi / vim :

Si "tiro" (también conocido como "copiar") un texto, luego me muevo a otro lugar en el archivo y hago una "pegar", mi cursor permanece al comienzo del texto que acabo de pegar. Esto es diferente de lo que hacen los editores más modernos, que es colocar el cursor al final del texto que pegué.

Por ejemplo, suponiendo que el "búfer de copia" contiene la palabra "impresionante" que quiero pegar después de la palabra "an" en la frase:

This is an editor

En, por ejemplo , gedit , después de pegar:

This is an awesome editor
                  ^ Cursor is here

En vi :

This is an awesome editor
           ^ Cursor is here

¿Puedo cambiar vi para que actúe como (por ejemplo) gedit a este respecto?

JoelFan
fuente
Lo que es aún más extraño, en la lista con mi versión de Vim: si el texto extraído abarca más de una línea, entonces el cursor se deja al comienzo del texto pegado, de lo contrario se deja al final del texto pegado.
Alexey
lo siento, al menos
Alexey

Respuestas:

12

En vim, use gpy en gPlugar de py Ppara dejar el cursor después del texto pegado. Si desea intercambiar los enlaces, coloque las siguientes líneas en su .vimrc:

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

Curiosamente, en vim, py Pdeje el cursor en el último carácter pegado para un búfer de caracteres, incluso en modo compatible.

No sé cómo cambiar esto en otras versiones vi.

Gilles 'SO- deja de ser malvado'
fuente
1
Creo que "vi" suele ser realmente "vim" en la mayoría de las distribuciones, ¿verdad?
JoelFan
@JoelFan: la mayoría de las distribuciones de Linux no integradas, tal vez. En otro lugar, no. Si está de acuerdo con una solución de solo vim, no ponga vi en el juego: el 99% de la configurabilidad de vim no está en vi básico.
Gilles 'SO- deja de ser malvado'
¿Qué hay de "nvi"? Estoy confundido acerca de todos los diferentes vi's. Estoy mayormente interesado en Debian y Ubuntu
JoelFan
1
@JoelFan: nvi es un vi bastante básico, tiene como objetivo la compatibilidad con la implementación original y nada más. Si solo le interesan las instalaciones de escritorio o los servidores donde puede instalar programas fácilmente, puede suponer que vim está disponible. La familiaridad con implementaciones vi menores solo es útil en servidores bloqueados y dispositivos integrados.
Gilles 'SO- deja de ser malvado'
1
Uso "vi" principalmente para servidores, donde puedo instalar cosas, sí
JoelFan
0

Estoy bastante seguro de que esto es por diseño. Si pega con "p" (minúscula P), se supone que debe pegar después de la posición o línea actual. Sin embargo, si pega con "P" (P mayúscula), se pega antes de la posición o línea actual. Si su comportamiento deseado es que el cursor esté al final de su texto recién pegado, intente acostumbrarse a usar "P" en lugar de "p".

Apuesto a que si cavas lo suficientemente profundo, podrías encontrar una receta vim para poner en tu .vimrc que siempre movería el cursor al final de tu pasta, incluso si usas "p".

SethG
fuente
2
Pdeja el cursor al comienzo del texto pegado en vi (al menos en nvi y por POSIX).
Gilles 'SO- deja de ser malvado'
p y P afectan la posición de la inserción con respecto al texto circundante. no afectan la posición del cursor en sí, que siempre está en la misma posición en relación con el texto insertado.
eMBee