¿Cuál es el acceso directo para eliminar una palabra "reenviar" en un terminal Unix?

14

Lo hago Ctrl+Wen la terminal de Mac para eliminar una palabra (elimina desde donde se encuentra el cursor al comienzo de la palabra)

¿Cómo hago lo contrario: elimina desde donde está el cursor hasta el final de la palabra?

Deslizamiento
fuente

Respuestas:

14

Esto depende de su shell y su modo de edición de línea de comando activo.

Para un shell con el modo de edición de línea de comandos de Emacs ( set -o emacsen algunos shells), use Alt+D(esto no funciona en macOS por cualquier razón, pero imprime el carácter , use Escden su lugar).

Para un depósito con el modo de línea de comandos de edición Vi ( set -o vien algunas conchas), uso Escdw(esto lo hace el trabajo en MacOS también).

Kusalananda
fuente
Sin embargo, solo en zsh elimina Meta-D el mismo tipo de palabra que Ctrl-W (en blanco delimitado). En bashen viel modo, se puede utilizar dWpara eliminar los
Stéphane Chazelas
1
@ StéphaneChazelas Sí, ellos (los dos keycombos) tienen una visión diferente de lo que constituye una "palabra".
Kusalananda
Puede marcar la "opción de uso como meta" en las preferencias del teclado del terminal para que funcione.
Jozef Legény
Tanto Esc + D como Alt + D funcionan en el terminal xfce4 0.6.3 .
neverMind9
1

Para la disciplina de línea tty, ^Welimina la palabra delimitada por espacios en blanco anterior .

En el vieditor en modo de inserción, ^Welimina hacia atrás al inicio de la primera secuencia de alnums o no alnums (activado foo-+-bar.. baz, primero elimina baz, luego .., luego bar, luego -+-, luego foo).

En el emacseditor, ^Welimina de la posición del cursor a la marca (la que configuró con Ctrl+Space).

Algunos editores de línea como readline(usado por bash, gdb...), zle(usado por zsh), pdkshcuando están en vimodo, se comportan como vien ese sentido y cuando están en emacsmodo se comportan como la disciplina de línea tty (no emacs).

libedit(utilizado por shells BSD u (opcionalmente) dash), tcshAT&T ksh, en emacsmodo, se comportan como emacsdonde se ^Wborran a la marca (inicialmente al comienzo del búfer).

Para eliminar una palabra hacia adelante, en el vieditor, lo haría en modo comando ( normal ) con dwpara eliminar al comienzo de la siguiente secuencia de alnums o no alnums (o al final de la línea) y dWeliminar al siguiente secuencia de no espacios en blanco (el colgante de la ^Wdisciplina tty line).

En el emacseditor de líneas, Meta-Deliminaría hasta el final de la siguiente secuencia de caracteres alnum. La palabra operadores de movimiento ( Meta-B, Meta-F) se comportan de manera similar.

los editores de línea de comandos, cuando están en vimodo, se comportan como vi, pero en emacsmodo, tienes dos escuelas principales: la tcshescuela y la kshescuela.

La kshescuela ( readline, ksh, yash) se comporta igual que la mayoría emacs( fishel comportamiento 's es ligeramente diferente en la forma en que trata a no alnum, caracteres no está en blanco tanto emacsy vimodo).

En la tcshescuela ( tcsh, libedit, zsh), los movimientos de palabras se basan en palabras delimitadas por espacio de manera son consistentes con la línea TTY de la disciplina ^Wen ese sentido.

En zsh, el comportamiento es personalizable con diferentes estilos de palabras para todos los widgets de movimiento de palabras.

Para readline, puede obtener la tcshescuela (y Meta-Deliminar el mismo tipo de palabra que lo Ctrl-Whace) agregando a su ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

O, por otro lado, alinee ^Wa los otros widgets de movimiento de palabras (se comportan como Meta-Backscape) con:

set keymap emacs
"\C-W": backward-kill-word

En cuanto a cuál es la Metaclave, ver allí .

Stéphane Chazelas
fuente
-1

En Linux intente Ctrl+keliminar desde donde está el cursor hasta el final de la palabra.

Hay algunos otros atajos enumerados a continuación (trabajando en Linux):

  1. Ctrl+e -> Toma el cursor al final de la palabra.
  2. Ctrl+t -> Intercambia la posición de los alfabetos.
  3. Ctrl+y -> agrega postfix "hh" a la palabra actual.
  4. Ctrl+u -> Elimina toda la línea.
  5. Ctrl+o -> Funciona igual que la tecla Intro.
  6. Ctrl+p -> Funciona igual que el botón de flecha hacia arriba.
  7. Ctrl+a -> Lleva el cursor a la posición inicial del comando.
  8. Ctrl+d -> Cierra la terminal.
  9. Ctrl+f -> Mueve el cursor hacia adelante por un personaje.
  10. Ctrl+h -> Funciona igual que la tecla Retroceso.
  11. Ctrl+j -> Funciona igual que la tecla Intro.
  12. Ctrl+m -> Funciona igual que la tecla Intro.
  13. Ctrl+b-> Funciona igual que la tecla de flecha derecha. 14 Ctrl+4 -> elimina la palabra
SMshrimant
fuente
3
Ctrl+kelimina al final de la línea . Ctrl+uelimina toda la línea (si el cursor está al final). Ctrl+denvía EOF. Ctrl+eva al final de la línea , etc.
Kusalananda
Ctrl + y se usa para pegar, o tirar, lo último que guardó en el portapapeles, en su caso probablemente fue "hh". ¿Por qué crees que habría un atajo de teclado para corregir una palabra dada con las letras "hh"? ¿Cómo sería eso útil?
bmcentee148