Para ser claros, no desea una "forma rápida de mover el cursor en una línea de comando de terminal ". Lo que realmente quieres es una forma rápida de navegar por la línea de comando en tu shell programa de .
Bash es un shell muy común, por ejemplo. Utiliza Readline biblioteca para implementar la entrada de línea de comando. Y por así decirlo, es muy conveniente conocer los enlaces de Readline ya que se usa no solo en bash. Por ejemplo, gdb también usa Readline para procesar la entrada.
En la documentación de Readline puede encontrar todos los enlaces relacionados con la navegación (y más):
http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction
Copie y pegue brevemente si el enlace de arriba se cae:
Desnudos esenciales
- Ctrl-b Retrocede un personaje.
- Ctrl-f Avanza un personaje.
- [DEL] o [Retroceso] Eliminar el carácter a la izquierda del cursor.
- Ctrl-d Eliminar el carácter debajo del cursor.
- Ctrl-_ o Cx Cu Deshace el último comando de edición. Puede deshacer todo el camino de regreso a una línea vacía.
Movimiento
- Ctrl-a Moverse al inicio de la línea.
- Ctrl-e Moverse al final de la línea.
- Meta-f Avanza una palabra, donde una palabra se compone de letras y dígitos.
- Meta-b Retrocede una palabra.
- Ctrl-l Borrar la pantalla, reimprimiendo la línea actual en la parte superior.
Mata y tira
- Ctrl-k Mata el texto desde la posición actual del cursor hasta el final de la línea.
- Md Mata desde el cursor hasta el final de la palabra actual o, si está entre palabras, hasta el final de la siguiente palabra. Los límites de palabras son los mismos que los utilizados por Mf.
- M- [DEL] Elimina desde el cursor el inicio de la palabra actual o, si está entre palabras, hasta el comienzo de la palabra anterior. Los límites de palabras son los mismos que los utilizados por Mb.
- Ctrl-w Mata desde el cursor al espacio en blanco anterior. Esto es diferente de M- porque los límites de las palabras difieren.
- Ctrl-y Yank el texto eliminado más recientemente en el búfer en el cursor.
- Gira el anillo de la muerte y tira del nuevo techo. Solo puede hacer esto si el comando anterior es Cy o My.
M es la tecla Meta. Para Max OS X Terminal, puede habilitar "Usar opción como meta clave" en Configuración / Teclado para eso. Para Linux es más complicado.
Actualizar
También tenga en cuenta que Readline puede funcionar en dos modos:
- modo emacs (que es el predeterminado)
- modo vi
Para cambiar Bash para usar el modo vi:
$ set -o vi
Personalmente, prefiero el modo vi ya que uso vim para editar texto.
Prima
En la aplicación MacOS Terminal (y también en iTerm) puede hacer clic con la tecla Opción para mover el cursor (el cursor se moverá a la posición en la que se hizo clic). Esto incluso funciona por dentro vim
.
Mantenga presionada la tecla Opción y haga clic donde desee que se mueva el cursor, y Terminal apura el cursor en ese punto preciso.
fuente
Tiendo a preferir el modo de edición vi (ya que esas teclas están incrustadas en mi médula espinal ahora (el cerebro no se usa en absoluto), junto con CTRL-K, CTRL-X de WordStar 3.3 :-). Puede usar la línea de comando
set -o vi
para activarlo (yset -o emacs
revertirlo).En Vi, sería (ESC-K para obtener la línea primero, por supuesto) "
f5;;B
" (sin las comillas dobles).Por supuesto, tienes que entender qué hay en la línea para salirte con la tuya. Básicamente, es
Veamos si los aficionados a emacs pueden encontrar una mejor solución, menos de 5 pulsaciones de teclas (aunque no quiero comenzar una guerra religiosa).
¿Has pensado si tal vez te gustaría poner este comando terriblemente largo en un script? :-)
En realidad, puedo ir uno mejor que eso: "
3f5B
" para encontrar la tercera aparición de "5" y luego retroceder hasta el comienzo de la palabra.fuente
Use Meta-b / Meta-f para moverse hacia atrás / adelante por una palabra respectivamente.
En OSX, Meta se traduce como ESC, que apesta.
Pero, alternativamente, puede abrir las preferencias del terminal -> configuración -> perfil -> teclado y marcar "usar opción como meta clave"
fuente
Después de ejecutar el comando una vez, ejecute
fc
Se iniciará
$EDITOR
con el comando anterior, luego puede usar su editor habitual para modificar el comando. Cuando guarde y salga, el archivo se ejecutará.... pero, como dijo Pax, la línea de comando no es particularmente buena para editar líneas absurdamente largas, ¿por qué no convertir el comando en un script?
fuente
Si desea avanzar un cierto número de palabras, presione
M-<n>
(M-
es para Meta y generalmente es la tecla de escape) y luego presione un número. Esto envía un argumento de repetición a readline, para que pueda repetir cualquier comando que desee: si desea avanzar, presioneM-<n> M-f
y el cursor avanzará<n>
varias palabras.P.ej
Entonces, para su ejemplo desde el cursor al comienzo de la línea, golpearía,
M-26 M-f
y su cursor estaría en--option25|
-o- desde el final de la líneaM-26 M-b
colocaría su cursor en--|option25
fuente
Búsqueda incremental de historia
en terminal ingrese:
luego copie y pegue
todo lo que necesitas hacer para encontrar un comando anterior es ingresar, por ejemplo, las primeras 2 o 3 letras y la flecha hacia arriba te llevará allí rápidamente, decir que quiero:
todo lo que necesito hacer es entrar
y presione el comando de flecha hacia arriba pronto aparecerá
fuente
Una opción es usar
M-x shell
enemacs
. Eso proporciona todas las funciones de edición y pulsaciones de teclas queemacs
tiene, por lo queC-s
se puede utilizar para buscar el textooption25
, por ejemplo.(Pero aún así preferiría estar en el terminal real de la terminal si alguien me puede indicar buenas instalaciones de búsqueda y edición).
fuente
Use el ratón
A veces, la forma más fácil de editar una línea de comandos es usar un mouse. Algunas respuestas anteriores dan un comando para abrir su línea actual en su $ EDITOR. Para mí (zhs con configuración grml) esa combinación es
Alt+e
. Si habilita el mouse en su editor, puede usarlo.Para habilitar el mouse en Vim, agregue esto a su ~ / .vimrc
Si luego desea hacer una selección de texto en la terminal (en lugar de pasar el mouseclick a vim), mantenga presionada la tecla Mayús cuando haga clic; esto es específico de la terminal, por supuesto.
Los administradores de sistemas no deben temerle al mouse.
fuente
En Cygwin, puede activar dicha función haciendo clic derecho en la ventana. En la ventana emergente, seleccione Opciones ... -> Ratón -> activar Clics colocar cursor de línea de comando -> Aplicar.
De ahora en adelante, simplemente haciendo clic con el botón izquierdo del mouse en alguna posición dentro de la línea de comando colocará el cursor allí.
fuente
primero: export EDITOR = 'nano -m'
entonces: CTRL + X CTRL + E en secuencia.
Su línea actual se abrirá en nano editor con el mouse habilitado. Puede hacer clic en cualquier parte del texto y editar
luego CTRL + X para salir e y para confirmar el guardado.
fuente
Hice un script para hacer que el cursor de la línea de comando se moviera al hacer clic con el mouse :
Se puede encontrar en github
Más información en otra publicación
Funcionará si
echo -e "\e[?1000;1006;1015h" # Enable tracking
imprime secuencias de escape en la terminal al hacer clic con el mousefuente
Puede que no sea el más rápido, pero esto debe estar aquí, leer algo sobre los movimientos del cursor ANSI
Las secuencias de escape ANSI le permiten mover el cursor por la pantalla a voluntad. Esto es más útil para las interfaces de usuario de pantalla completa generadas por los scripts de shell, pero también se puede usar en las indicaciones . Las secuencias de escape de movimiento son las siguientes:
(...)
Intente poner la siguiente línea de código en el indicador (es un poco más claro lo que hace si el indicador se encuentra varias líneas hacia abajo en el terminal cuando coloca esto):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
Esto debería mover el cursor siete líneas hacia arriba en la pantalla, imprimir la palabra "BASH ", y luego regrese a donde comenzó a producir un mensaje normal.Ejemplos :
Mueva el cursor hacia atrás 7 líneas:
Mueva el cursor a la línea 10, columna 5:
Haga eco rápidamente de los códigos de colores para colorear un programa:
fuente