it-swarm-pt.com

Como pulo para a próxima palavra ou para a anterior com as teclas CTRL + seta em um console?

Em aplicativos de emulação de terminal, pressionando CTRLLeftRight flechas salta de uma palavra para a anterior ou seguinte. É possível ter a mesma funcionalidade em um console Linux, seja no modo texto ou no modo framebuffer?

Na minha configuração, o CTRL + teclas de seta são transformadas em sequências de caracteres de escape e não são interpretadas.

11
Pedro Palhoto

Isso é possível se e somente se o terminal enviar sequências de escape diferentes para Ctrl+Left vs Left. Este não é o caso por padrão no console do Linux (pelo menos na minha máquina). Você pode fazer isso modificando o mapa de teclado. O arquivo exato a ser modificado pode depender de 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 sequências de escape do emulador de terminal X. Para descobrir qual é a sequência de controle, digite Ctrl+VCtrl+Left em um Shell; este insere (na minha máquina) ^[O5D Onde ^[ é um caractere de escape. No arquivo de mapa de teclado, \033 representa um caractere de escape.

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

8

Atalhos estilo Emacs AltfAltb funcionam por padrão com todos os readline - programas de linha de comando ativados, como shells.

24
alex

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

2
HelloWorld