tutorial salir pegar guardar español editar deshacer copiar vim

salir - ¿Tirar de una región en VIM sin que el cursor se mueva hacia la parte superior del bloque?



vim linux (6)

No estoy seguro de si YankRing ha cambiado desde que se publicó la solución vmap ygv<Esc> pero eso no persistió para mí después de agregarla a mi .vimrc . YankRing en realidad lo sobrescribió.

Aquí está mi solución en .vimrc .

function! YRRunAfterMaps() vmap y ygv<Esc> endfunction

¿Hay una forma sencilla (es decir, sin escribir un guión o una secuencia de mapa de teclado elaborada) para Yank un grupo de líneas y dejar el cursor donde se realizó el Yank, en lugar de al principio del bloque?

De acuerdo con la ayuda de VIM: "Tenga en cuenta que después de un comando de tirón de caracteres, Vim deja el cursor en el primer carácter tirado que está más cerca del inicio del búfer". En cuanto a la línea parece comportarse de manera similar.

Esto es un poco molesto para mí, ya que tiendo a seleccionar una región grande de arriba a abajo, Yank, y luego pegar cerca o debajo de la parte inferior de la región seleccionada. Hoy estoy estableciendo una marca (mx) justo antes de Yank y luego saltar, pero sospecho que puede haber una secuencia Yank diferente que hará lo que necesito.

He buscado SO y la web para este numerosas veces. Hay tanto material de "atajos de VIM" existente para vadear, pero todavía no he encontrado una solución para esta.

Gracias por adelantado.


No sé qué sucedió mientras tanto, pero en IdeaVim las respuestas aceptadas no funcionan como me gustaría. (No mueva el cursor en el tirón)

Para mí, lo que hizo el truco fue establecer una marca antes de tirar e ir a eso después.

vmap y mxy`x


Si está utilizando bloques visuales ( v ), luego de arrastrar el bloque puede usar gv para volver a seleccionar el mismo bloque (que también mueve la posición del cursor hacia donde estaba antes de tirar). Si luego presiona Esc, el bloque se deselecciona sin mover el cursor.

También puede ser de interés el comando ctrl-o en el modo de bloque visual, que salta entre el inicio y el final del bloque seleccionado.


Si realiza el tirón en modo visual, también puede usar ''> o `> para ir a la última línea / carácter de la selección visual que acaba de tirar. En este contexto, esto es esencialmente lo mismo que ''] y `] que aparentemente no es compatible, por ejemplo, en VsVim.


¿No es suficiente responder a su pregunta, pero quizás ''] resolvería su problema?

''] `] To the last character of the previously changed or yanked text. {not in Vi}


:y3 tirará tres líneas enteras de la línea actual. Si sabe exactamente cuántas líneas tirar, este comando es muy útil. :help :yank de los detalles.

:%y seleccionará el búfer completo sin mover el cursor, como ggvG$y , sin el destello de selección resaltado y modificando el registro "* .

Yo uso este mapa de modo de inserción:

function! SelectAll() %y* endfun imap <expr> <F3> SelectAll()

ps: si prefiere <CV> para pegar (fuera de vim), use %y+

Compruebe https://.com/a/1620030/2247746