Bash: Como movo meu cursor para a esquerda uma palavra de cada vez?

14

No OSX, posso simplesmente manter pressionada a optiontecla e pressionar a tecla esquerda do cursor até chegar à palavra que preciso editar (ou no Vi, basta clicar b, mas não consegui descobrir como fazer isso no Terminal ainda...

nipônico
fonte
Você pode ver a lista completa de ligações da linha de leitura nesta página , incluindo instruções sobre como personalizar suas próprias ligações.
jasonwryan

Respostas:

26

Para definir a associação de teclas: Primeiro, você precisa descobrir quais códigos de chave a sequência de teclas Ctrl+ Leftcria. Basta usar o comando catpara desativar qualquer interferência nas combinações de teclas existentes e digite a sequência de teclas. No meu sistema (Linux), é assim:

$ cat
^[[1;5D

Pressione Ctrl+ dpara sair do gato. Agora você descobriu que Ctrl-Esquerda emite 6 códigos-chave:

  • Escape (^ [)
  • [
  • 1
  • ;
  • 5
  • D

Agora você pode emitir o comando bind:

bind '"\e[1;5D": backward-word'
daniel kullmann
fonte
6
Você pode adicionar `` "\ e [1; 5D": palavra inversa '' em $ HOME / .inputrc para efeito permanente, se desejar.
11442 llhuii
@llhuii +1, esqueci de mencionar isso!
Daniel kullmann
2
+1 para a maneira mais flexível de vincular combinações arbitrárias de teclas em qualquer lugar!
Irfy
14

A função bash que você deseja é backward-word. Você pode executar bind -q backward-wordpara obter uma lista de chaves associadas a essa função. Uma ligação comum é Esc+b

Além disso, muitos terminais suportam Ctrl+ Left(a mesma tecla de atalho que você pode usar no X para retroceder por palavra)

Michael Mrozek
fonte
1
Ok, ele retorna, backward-word can be invoked via "\eb".mas como vincular control + Left em vez de Esc + b? Além disso, uma desvantagem do Esc + b que eu já vejo é que tenho que desistir da tecla Esc toda vez que posso retroceder uma palavra, não há uma maneira melhor?
Nipponese
1
Existe uma maneira melhor? Naturalmente: set editing-mode vi:)
jasonwryan
3
@nipponese "esc b" também pode ser usado no teclado como ALT-b. Pode ser necessário que seja o alt esquerdo ou direito, dependendo da sua configuração, portanto, tente os dois.
precisa saber é o seguinte
8

O atalho de tecla padrão no Bash para backword-wordé Alt+ b. O mesmo resultado pode ser obtido com Esc+ b. Você deve experimentá-los antes de editar suas combinações de teclas.

Use o bindcomando para editar ou bind -q [name]obter o atalho de teclado atual de uma ação específica.

Marius Cotofana
fonte
2
... e para a frente -Alt + f
Putnik