Qual é o atalho para excluir uma palavra "encaminhar" em um terminal unix?

14

Eu faço Ctrl+Wno terminal mac para excluir uma palavra (exclui de onde o cursor está no início da palavra)

Como faço o contrário - exclui de onde está o cursor até o final da palavra?

Deslizar
fonte

Respostas:

14

Isso depende do seu shell e do modo ativo de edição da linha de comando.

Para um shell com o modo de edição de linha de comando do Emacs ( set -o emacsem alguns shells), use Alt+D(isso não funciona no macOS por qualquer motivo, mas imprime o caractere , use-o Escd).

Para um shell com o modo de edição de linha de comando do Vi ( set -o viem alguns shells), use Escdw(isso também funciona no macOS).

Kusalananda
fonte
Somente no zsh, porém, o Meta-D exclui o mesmo tipo de palavra que o Ctrl-W (os delimitados em branco). Em bashno vimodo, você pode usar dWpara eliminar aqueles
Stéphane Chazelas
1
@ StéphaneChazelas Sim, eles (os dois keycombos) têm uma visão diferente do que constitui uma "palavra".
Kusalananda
Você pode marcar a opção "use option as meta" nas preferências do teclado do terminal para fazê-lo funcionar.
Jozef Legény
Esc + D e Alt + D funcionam no terminal xfce4 0.6.3 .
neverMind9
1

Para a disciplina tty line, ^Wexclui a palavra anterior delimitada por espaço em branco .

No vieditor no modo de inserção, ^Wexclui para trás o início da primeira sequência de alnums ou não-alnums (ativado foo-+-bar.. baz, ele exclui primeiro baz, depois .., depois bare -+-depois foo).

No emacseditor, ^Wexclui da posição do cursor até a marca (a que você definiu Ctrl+Space).

Alguns editores de linha como readline(usado por bash, gdb...), zle(usado por zsh), pdkshsão quando no vimodo, se comportam como vinesse sentido e quando no emacsmodo se comportam como a disciplina da linha tty (não emacs).

libedit(usado pelos shells BSD ou (opcionalmente) dash), tcshAT&T ksh, no emacsmodo, se comporta como emacsonde é ^Wexcluído da marca (inicialmente no início do buffer).

Para excluir uma palavra para a frente, no vieditor, você faria isso no modo de comando ( normal ) com dwpara excluir o início da próxima sequência de alnums ou não-alnums (ou o final da linha) e dWexcluir o próxima sequência de não espaços em branco (o pingente da ^Wdisciplina tty line).

No emacseditor de linha, excluiria Meta-Daté o final da próxima sequência de caracteres de alnum. A palavra operadores de movimento ( Meta-B, Meta-F) se comporta de maneira semelhante.

Os editores de linha de comando, quando no vimodo, se comportam como vi, mas no emacsmodo, você tem duas escolas principais: a tcshescola e a kshescola.

A kshescola ( readline, ksh, yash) se comporta principalmente como emacs( fish's comportamento é ligeiramente diferente na forma como ele trata não alnum, caracteres não-espaço em branco em ambas emacse vimode).

Na tcshescola ( tcsh, libedit, zsh), movimentos de palavras são baseadas em palavras delimitados por espaços e por isso são consistentes com a tty linha disciplina ^Wda esse respeito.

Em zsh, o comportamento é personalizável com diferentes estilos de palavras para todos os widgets de movimento de palavras.

Para readline, você pode obter a tcshescola (e Meta-Dexcluir o mesmo tipo de palavra que o Ctrl-Wfaz) adicionando ao seu ~/.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

Ou, por outro lado, alinhe ^Waos outros widgets de movimento de palavras (se comportam como Meta-Backscape) com:

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

Quanto à Metachave, veja .

Stéphane Chazelas
fonte
-1

No Linux, tente Ctrl+kexcluir de onde o cursor está até o final da palavra.

Existem alguns outros atalhos listados abaixo (trabalhando no Linux):

  1. Ctrl+e -> Pega o cursor no final da palavra.
  2. Ctrl+t -> Inter-mudar a posição dos alfabetos.
  3. Ctrl+y -> adiciona o postfix "hh" à palavra atual.
  4. Ctrl+u -> Exclui toda a linha.
  5. Ctrl+o -> Funciona da mesma forma que a tecla Enter.
  6. Ctrl+p -> Funciona da mesma forma que o botão de seta para cima.
  7. Ctrl+a -> Traz o cursor para a posição inicial do comando.
  8. Ctrl+d -> Fecha o terminal.
  9. Ctrl+f -> Move o cursor para frente em um caractere.
  10. Ctrl+h -> Funciona da mesma forma que a tecla Backspace.
  11. Ctrl+j -> Funciona da mesma forma que a tecla Enter.
  12. Ctrl+m -> Funciona da mesma forma que a tecla Enter.
  13. Ctrl+b-> Funciona da mesma forma que a tecla de seta para a direita. 14 Ctrl+4 -> Exclui a palavra
SMshrimant
fonte
3
Ctrl+kexclui até o final da linha . Ctrl+uexclui a linha inteira (se o cursor estiver no final). Ctrl+denvia EOF. Ctrl+evai para o final da linha , etc.
Kusalananda
Ctrl + y é usado para colar, ou arrancar, a última coisa que você salvou na área de transferência; no seu caso, provavelmente foi "hh". Por que você acha que haveria um atalho de teclado para corrigir uma determinada palavra com as letras "hh"? Como isso seria útil?
precisa saber é o seguinte