linux - para - Cómo copiar y pegar desde la terminal con el teclado?
kali linux no me deja copiar y pegar (10)
¿Puedo sugerir RatPoison como su administrador de ventanas? Como su nombre indica, no necesitas un mouse en absoluto. No estoy seguro de cómo maneja el portapapeles, ya que solo lo he usado por diversión. Puede depender del programa de terminal que estés usando.
Intento alejarme del uso del mouse tanto como puedo (solo un proyecto de mascota). Sé que en la terminal puedes hacer ck para cortar una línea y cu para pegar esa línea en la misma terminal, pero estoy buscando algo donde pueda copiar una línea en la terminal en el portapapeles de gnomes para poder pegarlo en decir un navegador o somesuch.
Sé que si uso el mouse para resaltar el texto, puedo presionar shift-insert para pegar ese texto, lo cual es genial, pero ahora solo quiero poder hacerlo sin el mouse. Algo así como el resaltado c-space en emacs (pero incluso eso no se copia en el portapapeles gnome).
Gracias
Un poco más de aclaración, tengo varios terminales diferentes abiertos, y en muchos he ssh''ed en varias máquinas remotas donde las utilidades como xclip / xsel no son tan útiles.
Dicho here , los comandos predeterminados para copiar y pegar de GNOME son CTRL - SHIFT - C y CTRL - SHIFT - V.
Editar: Encontré una publicación de blog útil que te permite habilitar la copia / pegado del terminal a CTRL - C y CTRL - V en GNOME.
Durante mucho tiempo también estaba tratando de resolverlo, usando vt100.translations.
Tomado de http://www.fifi.org/doc/xterm/xterm.faq.html#future_work :
"XTerm*vt100.translations: #override /n/
<Key>Insert: string(/001) /n/
Shift <Key>Up: scroll-back(1,lines) /n/
Shift <Key>Down: scroll-forw(1,lines) /n/
Shift <Key>Right: string(0x1b) string("f") /n/
Shift <Key>Left: string(0x1b) string("b") /n/
Shift <Key>Delete: string(0x1b) string(0x08) /n/
Shift <Key>Tab: string(0x1b) string("*") /n/
<Key>0x1000FF0D: scroll-back(1,page) /n/
<Key>0x1000FF0E: scroll-forw(1,page) /n/
<Key>0x1000FF09: string(/010) /n/
<Key>0x1000FF0A: string(/005) /n/
<Key>BackSpace: string(0xff) /n/
<Key>Select: select-start() /n/
<Btn1Motion>: select-extend() /n/
<Key>0x1000FF02: select-end(PRIMARY,CUT_BUFFER0) /n/
Meta <Key>0x1000FF02: select-end(CLIPBOARD) /n/
<Key>0x1000FF04: insert-selection(PRIMARY,CUT_BUFFER0) /n/
Meta <Key>0x1000FF04: insert-selection(CLIPBOARD) /n/
<Key>F1: string(0x1b) string("OP")
sin éxito
OK si hemos configurado alguna tecla para select-start select-end ..extend pero cómo traer el cursor a su.
La pantalla gnu puede ser una solución, pero no estará correctamente en zsh, y no podemos traer texto cortado en Xclipboard.
Este es un hack súper pesado, pero funciona para copiar la última línea de salida desde el último comando de ejecución en un terminal usando solo el teclado (y un script de python), y puede funcionar a través de ssh.
Así es como lo usa.
- En gnome-terminal (o similar), Alt + E, A. Esto es para Seleccionar todo.
- Si está en ssh, abra una terminal diferente en su máquina local.
- Ejecute el script adjunto, que llamo lastline en mi máquina.
Luego tienes una línea de texto sin línea nueva en tu portapapeles gtk. La secuencia de comandos funciona utilizando el portapapeles de selección x para seleccionar todo el texto de la terminal y poner la penúltima línea de la misma en el portapapeles gtk. Este script se puede modificar para seleccionar diferentes partes de la selección x, que corresponderían a diferentes partes del buffer de texto del terminal. Sin embargo, todavía hay un largo camino desde un cursor interactivo :(
Sería genial si el soporte de selección guiado por teclado integrado gnome-terminal.
Este ejemplo coloca "/ usr / bin / gcc" en el portapapeles gtk (recuerde seleccionar Seleccionar todo antes de ejecutar la última línea):
$ which gcc
/usr/bin/gcc
$ lastline
Aquí está el script que llamo lastline:
#!/usr/bin/env python
import sys, subprocess
import optparse
__version__ = "0.1"
def main():
try:
process = subprocess.Popen(["xsel"], stdout=subprocess.PIPE)
except OSError:
sys.exit("you must install xsel")
(stdout, _) = process.communicate()
lines = stdout.split("/n")
if len(lines) < 3:
text = ""
else:
text = lines[-3]
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text(text)
clipboard.store()
if __name__ == "__main__":
parser = optparse.OptionParser(version=__version__)
(options, args) = parser.parse_args()
main()
Intenté lo que hlovdal sugirió y usé la GNU screen
y xclip
. El resultado fue un simple script:
cat /tmp/screen-exchange | xclip
que configuré para Ca e
en .screenrc
:
bind e exec !!! $HOME/bin/screen-exchange-to-primary
luego, simplemente ingreso el modo de copia / desplazamiento en la pantalla con Ca [
marcar / seleccionar con >
y copiar a la selección principal con Ca e
. Quizás no sea la secuencia más suave de combinaciones, pero es lo mejor que tengo hasta ahora.
Mayús + Insertar para pegar. Creo que es lo que necesitas, pero no sé cómo copiar desde la terminal.
Para interactuar con el portapapeles X11 desde la línea de comandos, vea esta pregunta .
Tal vez una pista lateral a lo que pides, pero para la interacción de la ventana del terminal puedo recomendar la screen , donde utilizas las teclas para copiar y pegar (¡desde un buffer de desplazamiento de búsqueda!). La operación de copiar y pegar solo se realiza entre ventanas controladas por la pantalla, tal como lo describe con la ventana del terminal y cu & ck, pero puede volcar fácilmente a / tmp / screen-xchange y luego usar xclip para copiar al portapapeles X11.
Puede ejecutar el shell dentro de Emacs, luego puede seleccionar y copiar al portapapeles como lo haría normalmente en Emacs.
En cuanto a "ejecutar el shell dentro de Emacs", hay varias opciones: Mx shell
, Mx eshell
y varios term
/ eterm
/ ansi-term
eterm
- eterm
stuff (modos) (estos "* term" deben ser mejores para curse pseudographics, etc. )
En cuanto a mí personalmente, tratando de mantenerme alejado del mouse, intento usar eshell
principalmente (no necesito las aplicaciones de curses por lo general), emacs-w3m
para navegar en la web, solo Emacs principalmente para todo lo demás, y ratpoison
como la ventana gerente.
Sé que si tu shell es bash o tcsh, utiliza la biblioteca readline para editar líneas, por lo que la función Control-K es manejada por readline y se almacena en un buffer "kill-ring" dentro de tu shell. Es imposible robar el contenido del kill-ring de tu caparazón (a menos que tu caparazón tenga una funcionalidad específica programada que lo permita); sin embargo, puedes volver a configurar el Control-K para realizar otra acción configurando el .inputrc archivo en su directorio de inicio. Así que podría configurarlo para realizar una macro, por ejemplo, sacando el texto "xclip -in / n" y luego volcando el contenido del kill-ring a la salida junto con una acción "Control-D" para terminar el texto. Esto se explica principalmente en la página de manual de readline.
Nunca había probado algo así antes, así que no sé si funcionaría o no, pero esa es la ruta que probaría primero.
¡Es fácil! ¡Simplemente ejecute dos comandos y podrá copiar y pegar con Ctrl+C
Ctrl+V
!
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
¡Feliz copia y pegado!