Como pulo para a palavra seguinte ou anterior com as teclas de seta CTRL + em um console?

11

Nas aplicações de emulação de terminal, pressionar as setas CTRL+ Left/ Rightsalta de uma palavra para a anterior ou a seguinte. É possível ter a mesma funcionalidade em um console Linux, seja no modo texto ou no buffer de quadros?

Na minha configuração, as CTRLteclas de seta + são transformadas em seqüências de caracteres de escape e não são interpretadas.

Pedro Palhoto
fonte

Respostas:

8

Isto é possível, se e somente se o terminal envia sequências de escape diferentes para Ctrl+ Leftvs Left. Por padrão, esse não é o caso no console do Linux (pelo menos na minha máquina). Você pode fazer isso modificando o mapa de teclas. O arquivo exato a ser modificado pode depender da sua distribuição; no Debian lenny, o arquivo a ser modificado é /etc/console/boottime.kmap.gz. Você precisa de linhas como

control keycode 105 = F100
string F100 = "\033O5D"
control keycode 106 = F101
string F101 = "\033O5C"

Você também pode escolher as mesmas seqüências de escape que o seu emulador de terminal X. Para descobrir qual é a sequência de controle, digite Ctrl+ V Ctrl+ Leftem um shell; Isso insere (na minha máquina) ^[O5Donde ^[é um caráter de fuga. No arquivo de mapa de teclas, \033representa um caractere de escape.

Configurar o aplicativo no terminal para decodificar a sequência de escape é um problema separado,.

Gilles 'SO- parar de ser mau'
fonte
você está apenas explicando como obteve o "\033O5D"código, mas omitindo completamente de onde obteve os códigos keycode 105e F100. Além disso, recebo ^[[1;5Be ^[[1;5Apara ctrl + Down e Ctrl + Up. Como devo lidar com a 1;peça?
Martin Vegter
1
@MartinVegter Verifique o arquivo existente para códigos-chave ou use o showkeyprograma. A 1;parte não é diferente do resto: "\033[1;5B"e assim por diante.
Gilles 'SO- stop be evil'
OK, keycode 105pode ser encontrado usando showkey. Mas onde você conseguiu F100?
Martin Vegter
@MartinVegter Escolha um que ainda não esteja em uso. Um diferente por keychord (acabei de corrigir um erro de digitação na minha resposta).
Gilles 'SO- stop being evil'
24

Atalhos Emacs-estilo Alt+ f, Alt+ btrabalho por padrão com todos readline programas de linha de força a vapor de comando, como conchas.

alex
fonte
2

Você pode definir o vim como seu editor de linha de comando e pressionar ESC e pular o estilo do vim (avançar, voltar, terminar, $, 0, etc)


fonte
-1

Eu tive esse problema no Debian com um ~/.inputrcarquivo vazio . Corrigido o problema removendo este arquivo.

Talkerbox
fonte