¿Hay alguna forma de copiar todas las líneas del archivo abierto al portapapeles en el editor de VI? Lo intenté yGpero no está usando el portapapeles para almacenar esas líneas.
Entonces, ¿es posible?
vim
editor
keyboard-shortcuts
vi
Xinus
fuente
fuente
Respuestas:
Debe tirar el texto a los registros
*
o :+
gg"*yG
Explicación:
gg
para llevar el cursor al primer caracter del archivo"*y
para iniciar un comando de extracción al registro*
desde la primera línea, hasta ...G
ir al final del archivofuente
"
.:version
en vim y busque la+xterm_clipboard
bandera. Si está precedido por un signo menos, entonces no tendrá esta funcionalidad. Si este es el caso, es posible que desee compilar vim usted mismo o ejecutar gvim, que generalmente tiene esta característica habilitada.Utilizar:
:%y+
para tirar de todas las líneas.
Explicación:
%
para referir el siguiente comando para trabajar en todas las líneasy
para tirar de esas líneas+
copiar al portapapeles del sistemaNB : en Windows,
+
y*
son equivalentes ver esta respuesta .fuente
:help
para asegurarte de que estás realmente en vim.set clipboard=unnamed
, ¡pero esto funcionó muy bien!E850: Invalid register name
:(en Mac
copiar parte seleccionada: seleccionar visualmente el texto (escribir
v
oV
en modo normal) y escribir:w !pbcopy
copia todo el archivo
:%w !pbcopy
pasado del portapapeles
:r !pbpaste
fuente
pbcopy
es una utilidad para Mac. En Linux,xsel
podría funcionar en su lugar, oclip
en Windows.:%w !pbcopy
aún funciona si el archivo es más largo que la altura del terminal.El portapapeles es buffer +. Para copiar al portapapeles, haz "+yy [movimiento].
Entonces, gg"+yGcopiará todo el archivo.
Del mismo modo, para pegar desde el portapapeles, "+p
fuente
Otra forma fácil de copiar todo el archivo si tiene problemas para usar VI, es simplemente escribiendo "cat filename". Hará eco del archivo en la pantalla y luego puede desplazarse hacia arriba y hacia abajo y copiar / pegar.
fuente
:!cat %
. Y para copiar el contenido del archivo mediante programación al portapapeles en Mac OS::!cat % | pbcopy
Esto es lo que hago para tirar todo el archivo:
fuente
clipboard
conjunto para copiar el texto arrancado+
.Puede usar el comando "cat" para abrir el archivo y usar el mouse para copiar
fuente
reset
el terminal de antemano, luego seleccione todo y copie. Esto funciona a través de lassh
sesión.(en respuesta a @rshdev, y para evitar tener que volver a compilar vim con + xterm_clipboard por @nelstrom en los comentarios sobre OP)
hay un programa llamado xclip que funciona como putclip en Ubuntu 11:
No está instalado por defecto. para instalar, use:
fuente
En Ubuntu 12
puede intentar instalar el
vim-gnome
paquete:Lo probé porque
vim --version
me dijo que tendría la bandera xterm_clipboard desactivada (indicada por - ), que es necesario para usar la funcionalidad del portapapeles.-> la instalación del paquete vim-gnome en Ubuntu 12 también instaló una versión basada en consola de vim, que tiene esta opción habilitada (indicada por un + antes del indicador xterm_clipboard)
En Arch Linux
Puedes instalarlo
vim-clipboard
por el mismo motivo.Si ejecuta neovim, entonces debe instalar
xclip
(como se explica enhelp clipboard-tool
)fuente
Si está utilizando Vim en modo visual, también se aplican las teclas estándar de cortar y pegar, al menos con Windows.
Al menos en la terminal de Ubuntu (Gnome), la copia estándar también funciona ( CTRLSHIFTCaunque no parece haber un método abreviado de teclado estándar para
select all
(aparte del ALTEseguido por A).fuente
puedes presionar gg para ubicar tu cursor al inicio del archivo, luego presionar yG para copiar todo el contenido de principio a fin (G ubicado) al búfer. ¡Buena suerte!
fuente
Probé algunos de los comandos que la gente ha mencionado anteriormente. Ninguno funcionó. Entonces conseguí el más simple de todos.
Paso 1:
vi <filename>
Paso 2: haga clic con el botón derecho en la barra de título de la ventana Putty.
Paso 3: seleccione "Borrar el desplazamiento hacia atrás" (para evitar copiar el resto de su sesión SSH).
Paso 4: haga clic derecho nuevamente y seleccione "Copiar todo al portapapeles".
fuente
Window > Settings > lines of scrollback
a 40000 (también disponible haciendo clic derecho en la barra de título). También ayuda usar encat
lugar de vi, ya que se desplaza por todo el texto.:%y a
Tira todo el contenido al búfer de vim, al presionarp
en modo comando pegará el contenido arrancado después de la línea en la que se encuentra actualmente el cursor.fuente
gVim:
ggVG
Ver
:help go-a
:fuente
Bueno, todos estos enfoques son interesantes, sin embargo, como programador perezoso, utilizo tirar de todas las líneas mediante la combinación de número +
y
por ejemplo, tiene un archivo de código fuente con un total de 78 líneas, puede hacer lo siguiente:
gg
para obtener el cursor en la primera líneay
-> tira 78 líneas debajo de su cursor y la línea actualfuente
No había un concepto de "portapapeles" en el vi de Bill Joy, así que no creo que haya una forma integrada de hacerlo.
La función de copia automática de todo lo resaltado en el portapapeles de gVim es más fácil o utiliza un programa externo a través de:!
Para vim de Cygwin uso
¿Quizás Ubuntu tiene una aplicación CLI como putclip?
fuente
Si sus dedos están predeterminados en
CTRL-A CTRL-C
, intente las asignaciones desde$VIMRUNTIME/mswin.vim
.Los tengo asignados a
<Leader><C-a>
y<Leader><C-c>
.fuente
Copie todo el archivo dentro del vim o sus pestañas
luego pasar a una pestaña y pegar
y para cortar todo el archivo use
fuente
He agregado la siguiente línea a mi .vimrc
Esto me permite copiar todo el texto en Vim al portapapeles presionando
F5
(en modo comando).fuente
Aquí hay un comando de mapa para seleccionar todo al portapapeles usando CTRL+ a:
Añádelo a tu .vimrc y listo ...
fuente
Sé que diez años en esto deberían resolverse, pero las dos primeras respuestas no funcionaron para mí, así que seguí investigando. En un Redhat (servidor remoto) - Windows 10 (máquina local), si no puede seleccionar todo con un mouse, está atascado porque las copias habituales no funcionan entre el portapapeles de la máquina remota y local.
Entonces, para copiar en el Linux remoto y pegar en el Windows local, especifique el búfer primario con el * y haga un buen doble tirón
Uso gg" * yy.
fuente
He creado una función para realizar esta acción, colóquela en su
~/.vimrc
.OBS: Si está utilizando neovim, también necesita un administrador de portapapeles como xclip. para más información escriba en neovim
:h checkhealth
También es importante mencionar que no siempre un simple
y
copiará en el portapapeles, con el fin de hacer que cada copia de alimentación+
cual es "portapapeles Registro" tratar de establecer::set clipboard=unnamed,unnamedplus
. Para más información ver::h unnamed
.Aquí más información sobre vim wikia.
fuente
Puedes usar un shortcur, como este:
Significa que cuando presiona F6 en modo normal, copiará todo el archivo y lo agregará al portapapeles. O simplemente puede escribir en modo normal
:%y+
y luego presionarEnter
.fuente
Haga clic con el botón izquierdo del mouse, arrastre por la sección que desea copiar y suelte. El código se copia automáticamente en el portapapeles.
fuente
vi
mucho menos).No pude copiar archivos usando las respuestas anteriores, pero tengo masilla y encontré una solución en Quora.
Nota: copia todos los caracteres impresos de esa sesión en el archivo de registro, por lo que eventualmente se hará grande. En ese caso, elimine el archivo de registro y seleccione el archivo de destino para que se copie el contenido de ese archivo en particular en su máquina.
fuente