El comando p se pega debajo del cursor y P se pega sobre el cursor. ¿Cuál es el comando para pegar en la línea donde está el cursor?¿Cómo pegar en la línea donde está el cursor?
Respuesta
Todo esto depende del tipo de datos en el registro que está pegando. Si los datos están orientados a la línea (por ejemplo, con yy), se pegarán como una línea completa encima o debajo del cursor. Si los datos están orientados a caracteres (tirados con, por ejemplo, yw), se pegarán en la posición anterior del cursor en la línea actual.
Consulte :help linewise-register
para obtener más información sobre la interacción entre el tipo de registro y el comando poner.
Copiar una palabra está bien. Pero estoy hablando solo de líneas. Eso significa que una línea no puede ser copiada y pegada al final de otra línea en Vim. ¿No es así? – Kitcha
@Kitcha - Obtenga más información acerca de la copia en línea y en caracteres. Puede copiar una línea de la manera que desee si la retiró de una manera característica, por ejemplo, '0y $' en lugar de la línea 'yy'. 'p' o' P' se pegarán en la línea actual o en una línea diferente dependiendo de si el tirón fue característico (se pega en la línea actual) o en línea (se pega en la línea arriba o abajo). –
Si te encuentras comúnmente queriendo "lanzar" 'p' /' P', es posible que desees echar un vistazo a UnconditionalPaste de Ingo Karkat. http://www.vim.org/scripts/script.php?script_id=3355 –
No estoy seguro de que haya una. He intentado encontrar documentación y corrió a través de los tres documentos siguientes:
Desafortunadamente, los tres sólo se tienen los dos comandos que usted lista. En particular, el tercer enlace establece que The commands to paste are p and P...
Tiene razón. Pensé que hay algo que no sé. – Kitcha
No, mira esta respuesta: http://stackoverflow.com/a/9383985/11621 –
El Editar menú en gvim enumera los siguientes:
Pega = "+gP
Put Antes = [p
Ponga Después = ]p
Si se está utilizando vim en Windows, puede hacer lo siguiente para obtener Ctrl +C y Ctrl + V para que funcionen como se esperaba:
source $VIMRUNTIME/mswin.vim
behave mswin
Si desea mantener la línea actual tal como está, puede pegar encima o debajo de la línea.
Si desea sobrescribir la línea actual, primero deberá eliminarla, lo que significa que la siguiente línea toma su lugar, y luego pegar sobre la nueva línea actual.
Hay más de una manera de hacerlo:
"_ddP
"_dd
borra toda la línea actual en el "registro de agujero negro", la siguiente línea es ahora la corriente línea.P
pone el contenido del registro sin nombre encima de la línea actual.
Vp
V
te pone en LINEA VISUAL modo y selecciona visualmente toda la línea actualp
sustituye a la selección con el contenido del registro anónimo
S<C-r>"
S
elimina el contenido de la línea actual y te pone en INSERT modo<C-r>"
pone el contenido del registro anónimo
La t Las últimas opciones tienen un efecto secundario interesante: el contenido de la línea anterior se coloca en el registro sin nombre, lo que hace imposible hacer múltiples pasadas con el mismo contenido.
Por suerte, se puede evitar esta situación:
El "registro de agujero negro", mencionado en la primera solución funciona, así ... como un agujero negro. Lo que sea que pongas en él desaparece para siempre, así que puedes seguir usando
p
yP
con cierto grado de confianza de que el registro sin nombre sigue siendo el mismo de pegar para pegar.Vim le da acceso a 26 registros alfabéticos que puede usar para guardar macros o ... pegar cosas repetidamente.
Tomando la segunda solución como punto de partida, comienza tirando de una línea completa en el registro
"a
con"ayy
y luego haceV"ap
en otra línea.
Pero todo lo anterior asume que el texto que desea pegar es una línea real. Vim hace la diferencia entre "sabio de línea" y "sabio de personaje": no te permitirá pegar una línea en un contexto de carácter o al revés.
Al juntar una línea entera con yy
se mantiene la línea en cuanto a la sabiduría del personaje y no se podrá p
entre dos caracteres en la misma línea. Para eso debes asegurarte de que lo que tiras no sea interpretado en línea por Vim. Por ejemplo, supongamos que usted está en el primer carácter de la primera línea y quiere pegar ipsum dolor
y ponerlo en su lugar normal entre lorem
y sit
:
ipsum dolor
lorem sit amet
Debe escribir "ayee
para poner su texto pegado en el registro "a
, coloque el cursor donde sea necesario y escriba "aP
.
'" * 'no es el registro sin nombre.' "" 'Es el registro sin nombre. Consulte': h quotequote'. Imagino que ha cambiado ''portapapeles'' para incluir' sin nombre'. –
Sí, tiene razón en ambos cuenta. He modificado mi respuesta. – romainl
Puede usar D para borrar de la posición actual del cursor al final de la línea, y la p a la nueva posición del cursor.
Para cortar y pegar una línea completa use^D y p.
Necesitaba "castrar" el contenido del registro en un cierto modo (caracter/linewise/blockwise) tan seguido, escribí el UnconditionalPaste plugin para ello. Proporciona gcp
, glp
, etc. alternativas a los comandos de pegado integrados que fuerzan cierto modo (y por ahora varias variaciones más sobre este tema, como pegar con unidas por comas o caracteres consultados).
Con él, puede usar gcp
/gcP
para pegar después/antes de la posición del cursor, independientemente de cómo haya extraído el texto.
Para pegar en el modo de inserción, simplemente presione Control + R. Luego ingrese el registro, p. Shift + +.
Para pegar en modo comando, pulsa P, sin embargo, usted tiene que asegurarse de que su línea no tiene un carácter de nueva línea (por ejemplo, un tirón por 0v$hy
), de lo contrario va a aparecer sobre el cursor.
Lo mismo para el modo visual, ver: How to paste a line in a vertical selection block? en Vim SE
(Sé que este hilo es de edad, acaba de salir de esto y espero que esto puede ayudar a alguien)
Inspirado por @ de GBM comentario anterior sobre el borrado el avance de línea, he añadido a mis estos mapeos:
nnoremap <leader>p :let @"=substitute(@", '\n\+$', '', '')<CR>p
inoremap <leader>p <esc>:let @"=substitute(@", '\n\+$', '', '')<CR>pa
Esto es útil cuando tengo un archivo con algunos SQL (línea por línea) y tengo que ingresar al código.
divide la línea en 2 dondequiera que usted desee insertar
pegar el tramo entre ellos
fusionar las 3 líneas con j como se describe aquí (Delete newline in Vim)
funciona, pero es tedioso, y tenía que pensar en eso, búsquelo => vi y emacs son software de basura
- 1. Pegar en Vim sin mover el cursor
- 2. cómo colocar un div emergente basado en la posición de donde está el cursor hace clic
- 3. ¿Cómo inserto un salto de línea donde está el cursor sin ingresar al modo de inserción en Vim?
- 4. Cambiando donde se inicia el cursor en un EditText expandido
- 5. ¿Dónde se define el color de la línea del cursor?
- 6. Pegar cadena de múltiples líneas en gVim en la posición del cursor
- 7. ¿Cómo pegar una nueva línea con vim?
- 8. Insertar valor en TEXTAREA donde el cursor era
- 9. Linq Donde el valor está en Array
- 10. Pegar desde el portapapeles y alternar automáticamente: establecer pegar
- 11. ¿Cómo encontrar el número de línea del cursor en Python?
- 12. ¿Cómo pegar texto en el cursor actual del cuadro de texto?
- 13. Convertir el cursor de emacs en una línea
- 14. C moviendo el cursor al principio de la línea actual
- 15. ¿En qué elemento está el cursor al mouseleave() con jQuery?
- 16. Vim copiar y pegar
- 17. donde diablos está org.hibernate.tool.ant.HibernateToolTask?
- 18. ¿Cómo puedo mover el cursor a la línea inferior que se muestra en la ventana actual?
- 19. ¿Cómo comprobar si el cursor está sobre un elemento?
- 20. Cómo copiar y pegar desde el terminal con el teclado?
- 21. Cortar al principio/al final de la línea, pegar al final/principio de la línea
- 22. Android: El cursor de la ventana está llena
- 23. ¿Cómo borro una palabra cuando el cursor está en el medio de la palabra?
- 24. ¿Cómo sé en qué columna está mi cursor en Xcode?
- 25. escribe declaraciones en 'donde' - ¿qué está pasando?
- 26. cómo detectar el evento pegar en excel
- 27. Cambie el cursor de texto/cursor en Visual Studio 2010
- 28. Conservar saltos de línea al pegar en textarea
- 29. xcodebuild - cómo especificar el directorio donde está el proyecto, sin hacer un cd en él
- 30. ¿está doblada la línea? - Cómo verificar pliegues en VIM
Relacionados: [¿Cómo pegar antes del cursor después de seleccionar un bloque vertical?] (Http://stackoverflow.com/q/4073731/55075) – kenorb