Solo una nota, la razón principal para usar Vi es porque Vim no está instalado. Si tienes instalado Vim, probablemente valga la pena usarlo. Vi no tiene realmente una ventaja además de que ya está presente en cada instalación de Unix. La mejor manera de aprender Vim en mi opinión es abrir su emulador de terminal (no desde dentro de Vim) y escribirlo lo vimtutorllevará a la velocidad a donde puede usarlo en aproximadamente 45 minutos.
Ben Mordecai
1
+1 @BenMordecai: ya estaba familiarizado con vi (desde antiguo), incluida su conveniente capacidad de sub-shell, pero necesitaba esa actualización. Gran poquito de tutoría. Lo atravesó como una brisa. Gracias.
Cbhihe
Respuestas:
192
Primero, asegúrese de estar en modo de edición (presione i). Luego puede pegar con Ctrl+ Shift+ V, si está en un emulador de terminal como gnome-terminal(o seleccione "Pegar" en el menú contextual).
También puede escribir :set pastevim antes de pegar para desactivar la sangría automática, etc. Luego, :set nopastedespués de pegar el contenido.
Consulte también esta pregunta en stackoverflow.com para obtener más información.
Si desea copiar / pegar líneas vim(en lugar de pegar el contenido del portapapeles), querrá revisar el comando yank . Aquí hay una hoja de trucos que podría ayudar.
Creo que si tienes el cursor del mouse activado, no puedes pegar usando Ctrl + Shift + V.
Alvin Wong
14
Solo una nota, Idistingue entre mayúsculas y minúsculas. La letra minúscula ies la forma normal de ingresar al modo de inserción. Capital Illeva el cursor al comienzo de la línea y luego lo introduce en el modo de inserción.
Ben Mordecai
64
Vi (y Vim) funciona de manera muy diferente en comparación con un editor de texto normal como Gedit. También tiene una curva de aprendizaje bastante empinada. Si desea aprender algunos comandos básicos, comience con este tutorial interactivo .
Sin embargo, para responder a su pregunta. Se puede acceder al contenido del portapapeles del sistema a través del registro más. Entonces, para pegar algo desde el portapapeles del sistema, puede, desde el modo Normal, presionar: "+p(No al mismo tiempo, sino uno tras otro).
En GNOME Terminal, los atajos para copiar y pegar son Ctrl-Shift-C y Ctrl-Shift-V, respectivamente.
Flimm
1
He tratado de presionar a su vez <kbd> "</kbd>, <kbd> + </kbd> y <kbd> p </kbd>, también <kbd>" </kbd> y <kbd> p < / kbd> y no ha pasado nada. ¿Qué he hecho mal? Yo uso vinovim
user907860
1
Esa es la respuesta correcta. Usando eg. Ctrl-Shift-v solo funcionará con los contenidos más simples (los saltos de línea y las sangrías pueden estar realmente mal si estás en la terminal y olvidaste usar set :paste).
rsenna
29
Si desea copiar y pegar contenidos dentro del mismo archivo , use yanky paste.
Si desea copiar el contenido de pegado en los terminales , abra el primer archivo, tirando del texto que desea, luego abra su segundo archivo dentro de vim (por ejemplo :tabnew /path/to/second/file) y presione ppara pegarlo.
Si desea copiar y pegar contenidos de vim a un programa externo , debe acceder al portapapeles del sistema. Supongo que usas Ubuntu. La versión GUI de vim siempre tiene soporte para portapapeles, sin embargo, si desea usar Vim desde un terminal, deberá verificar el soporte para portapapeles X11.
Desde la consola, escriba:
$ vim --version | grep xterm
Si encuentra -xterm_clipboard , tiene dos opciones:
1) Compile vim usted mismo, con la bandera xterm_clipboard en
2) Desinstale vim, instale gvim (vim-gtk o vim-gnome) en su lugar. Puede apegarse a no-gui vim llamando a vim desde la terminal, de la misma manera que lo hizo antes. Esta vez, cuando verificas, deberías encontrar + xterm_clipborad .
Ahora, cuando tira algo de texto en el registro + dentro de su editor vim (por ejemplo, "+ aa), también se copia en el portapapeles del sistema que puede recuperar de su programa externo como editor gedit, usando Ctrl+ V.
Si desea copiar y pegar contenidos de un programa externo en vim , primero copie el texto en el portapapeles del sistema a través de Ctrl+ C, luego en el modo de inserción del editor de vim , haga clic en el botón central del mouse (generalmente la rueda) o presione Ctrl+ Shift+ Vpara pegar.
Estas son 4 condiciones básicas de copiar y pegar relacionadas con vim. Espero que esto ayude.
¿Cuál es el punto de: tabnew / ruta / a / segundo / archivo? Puede lograr exactamente lo mismo tirando / copiando / cortando en el primer archivo, abriendo el segundo archivo con: vi / path / to / second / file y pegando (p / P) en él. Al menos en mi caso ... ¿O es porque tengo habilitada la función + xterm_clipboard vim? ¿O hay algo más para tabnew que solo eso?
Cbhihe
1
En Ubuntu vim-gtktiene xterm_clipboardsoporte y en Fedora lo xvimtiene.
icc97
18
Siempre uso Shift+ Insertcuando quiero pegar texto en el terminal, funciona en todos los programas de terminal.
(Esa es también la razón por la que nunca obtengo una computadora portátil donde no se puede presionar Insertsin presionar una tecla secundaria)
@Flimm que ya se explicó en un comentario de Ben Mordecai sobre otra respuesta.
sierrasdetandil
He editado la respuesta en minúsculas i. Las mayúsculas Imueven el cursor al comienzo de la línea antes de ingresar al modo de inserción, que no es necesario aquí.
Flimm
6
Instrucciones detalladas para copiar / pegar líneas de texto en vi usando yankyput
(use lo siguiente en el modo de comando de vi)
Copiar (YANK)
Para copiar una línea en vi:
En el modo de comando, mueva el cursor a la línea que debe copiarse y escriba yyo escribaY
Para copiar 2 líneas en vi:
En el modo de comando, mueva el cursor a la primera línea que debe copiarse y escriba 2yyo escriba2Y
(Del mismo modo, se puede copiar cualquier número de líneas)
Para copiar todas las líneas desde la ubicación actual hasta el final del archivo:
En el modo de comando, mueva el cursor a la primera línea que debe copiarse y escriba yG
Para copiar todo el texto de la ubicación actual al final de la palabra actual:
En el modo de comando, mueva el cursor a la ubicación desde donde se debe copiar el texto y escriba yw
Para copiar todo el texto de la ubicación actual al final de la línea:
En el modo de comando, mueva el cursor a la ubicación desde donde se debe copiar el texto y escriba y$
Pegar (PONER)
Para pegar texto en el portapapeles, después de la ubicación del cursor:
En el modo de comando, escriba p
Para pegar texto en el portapapeles, antes de la ubicación del cursor:
Con Vim 8+ en Linux o Mac, ahora puede simplemente usar la pasta nativa del sistema operativo ( ctrl+shift+Ven Linux, cmd+Ven Mac). No presione ipara el Modo Insertar.
Pegará el contenido del portapapeles de su sistema operativo, conservando los espacios y las pestañas sin agregar autoindenting. Es equivalente a la antigua :set paste, i, ctrl+shift+V, esc, :set nopastemétodo.
Esa es la respuesta que estoy buscando. Dado que Vim no es el predeterminado en las distribuciones gnu / linux, debe instalarse incluso en ubuntu. Además, los botones arriba y abajo de Vi no funcionan en ubuntu y no resaltan.
Solo quería señalar que usando Vim a través de Git Bash en Windows, puede usar po hacer clic con el botón central del mouse sin estar en modo de inserción. Usando Vim a través de PuTTY , puede hacer clic derecho. Y destacando hace la copia.
He notado esto porque llegué aquí sin ver que esto es SE para Ubuntu.
Eso no funcionó para mí en Windows Git Bash. ¿Qué consola estás usando, mintty o windows cmd?
wisbucky
Creo que fue mezquino.
Tyler Christian
0
Puede usar Ctrl+ Shift+ Vpara pegar en la versión de terminal vim, pero para la versión de GUI vim Neovim-Qt, pegar texto desde el portapapeles del sistema con Ctrl+ Shift+ Vsimplemente no funcionará. Tienes que acceder al portapapeles "+o "*en el editor vim.
Agregar nuevas combinaciones de teclas .vimrcserá simplemente los comandos copiar / pegar:
" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
vimtutor
llevará a la velocidad a donde puede usarlo en aproximadamente 45 minutos.Respuestas:
Primero, asegúrese de estar en modo de edición (presione i). Luego puede pegar con Ctrl+ Shift+ V, si está en un emulador de terminal como
gnome-terminal
(o seleccione "Pegar" en el menú contextual).También puede escribir
:set paste
vim antes de pegar para desactivar la sangría automática, etc. Luego,:set nopaste
después de pegar el contenido.Consulte también esta pregunta en stackoverflow.com para obtener más información.
Si desea copiar / pegar líneas
vim
(en lugar de pegar el contenido del portapapeles), querrá revisar el comando yank . Aquí hay una hoja de trucos que podría ayudar.fuente
I
distingue entre mayúsculas y minúsculas. La letra minúsculai
es la forma normal de ingresar al modo de inserción. CapitalI
lleva el cursor al comienzo de la línea y luego lo introduce en el modo de inserción.Vi (y Vim) funciona de manera muy diferente en comparación con un editor de texto normal como Gedit. También tiene una curva de aprendizaje bastante empinada. Si desea aprender algunos comandos básicos, comience con este tutorial interactivo .
Sin embargo, para responder a su pregunta. Se puede acceder al contenido del portapapeles del sistema a través del registro más. Entonces, para pegar algo desde el portapapeles del sistema, puede, desde el modo Normal, presionar: "+p(No al mismo tiempo, sino uno tras otro).
fuente
vi
novim
set :paste
).Si desea copiar y pegar contenidos dentro del mismo archivo , use
yank
ypaste
.Si desea copiar el contenido de pegado en los terminales , abra el primer archivo, tirando del texto que desea, luego abra su segundo archivo dentro de vim (por ejemplo
:tabnew /path/to/second/file
) y presionep
para pegarlo.Si desea copiar y pegar contenidos de vim a un programa externo , debe acceder al portapapeles del sistema. Supongo que usas Ubuntu. La versión GUI de vim siempre tiene soporte para portapapeles, sin embargo, si desea usar Vim desde un terminal, deberá verificar el soporte para portapapeles X11.
Desde la consola, escriba:
Si encuentra -xterm_clipboard , tiene dos opciones:
1) Compile vim usted mismo, con la bandera xterm_clipboard en
2) Desinstale vim, instale gvim (vim-gtk o vim-gnome) en su lugar. Puede apegarse a no-gui vim llamando a vim desde la terminal, de la misma manera que lo hizo antes. Esta vez, cuando verificas, deberías encontrar + xterm_clipborad .
Ahora, cuando tira algo de texto en el registro + dentro de su editor vim (por ejemplo, "+ aa), también se copia en el portapapeles del sistema que puede recuperar de su programa externo como editor gedit, usando Ctrl+ V.
Si desea copiar y pegar contenidos de un programa externo en vim , primero copie el texto en el portapapeles del sistema a través de Ctrl+ C, luego en el modo de inserción del editor de vim , haga clic en el botón central del mouse (generalmente la rueda) o presione Ctrl+ Shift+ Vpara pegar.
Estas son 4 condiciones básicas de copiar y pegar relacionadas con vim. Espero que esto ayude.
fuente
vim-gtk
tienexterm_clipboard
soporte y en Fedora loxvim
tiene.Siempre uso Shift+ Insertcuando quiero pegar texto en el terminal, funciona en todos los programas de terminal.
(Esa es también la razón por la que nunca obtengo una computadora portátil donde no se puede presionar Insertsin presionar una tecla secundaria)
fuente
Vi
/Vim
! = terminal;)Ctrl+A
,Ctrl+C
también?Use el botón central del mouse para insertar texto que haya resaltado en otro lugar.
Es útil cuando no tiene acceso al portapapeles de su sistema (por ejemplo, en una sesión SSH remota).
Debe estar en modo de edición / inserción para Vim.
fuente
Una vez que ingrese vi, presione
i
para ingresar al modo de inserción, haga clic derecho en la terminal, haga clic en pegar.fuente
i
. ¿Qué hace mayúsculaI
?i
. Las mayúsculasI
mueven el cursor al comienzo de la línea antes de ingresar al modo de inserción, que no es necesario aquí.Instrucciones detalladas para copiar / pegar líneas de texto en vi usando
yank
yput
(use lo siguiente en el modo de comando de vi)
Copiar (YANK)
Para copiar una línea en vi:
yy
o escribaY
Para copiar 2 líneas en vi:
2yy
o escriba2Y
(Del mismo modo, se puede copiar cualquier número de líneas)
Para copiar todas las líneas desde la ubicación actual hasta el final del archivo:
yG
Para copiar todo el texto de la ubicación actual al final de la palabra actual:
yw
Para copiar todo el texto de la ubicación actual al final de la línea:
y$
Pegar (PONER)
Para pegar texto en el portapapeles, después de la ubicación del cursor:
p
Para pegar texto en el portapapeles, antes de la ubicación del cursor:
P
fuente
Tuve un problema porque mi instalación de Vim no era compatible con el portapapeles :
Instalé vim-gnome (que admite el portapapeles) y luego verifiqué nuevamente:
Ahora puedo copiar y pegar usando "+ y y" + p respectivamente.
fuente
Con Vim 8+ en Linux o Mac, ahora puede simplemente usar la pasta nativa del sistema operativo (
ctrl+shift+V
en Linux,cmd+V
en Mac). No presionei
para el Modo Insertar.Pegará el contenido del portapapeles de su sistema operativo, conservando los espacios y las pestañas sin agregar autoindenting. Es equivalente a la antigua
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
método.Ya ni siquiera necesita instalar las funciones
+clipboard
o+xterm_clipboard
vim. Esta característica se llama "pasta entre corchetes". Para obtener más detalles, consulte https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763fuente
Si eres root : Ctrl+ Shift+V
Si no es root : haga clic en el centro del mouse.
fuente
Solo quería señalar que usando Vim a través de Git Bash en Windows, puede usar
p
o hacer clic con el botón central del mouse sin estar en modo de inserción. Usando Vim a través de PuTTY , puede hacer clic derecho. Y destacando hace la copia.He notado esto porque llegué aquí sin ver que esto es SE para Ubuntu.
Otros comandos útiles:
fuente
Puede usar Ctrl+ Shift+ Vpara pegar en la versión de terminal vim, pero para la versión de GUI vim
Neovim-Qt
, pegar texto desde el portapapeles del sistema con Ctrl+ Shift+ Vsimplemente no funcionará. Tienes que acceder al portapapeles"+
o"*
en el editor vim.Agregar nuevas combinaciones de teclas
.vimrc
será simplemente los comandos copiar / pegar:fuente