Qual configuração controla o movimento do cursor na linha de comando?

Qual configuração controla o movimento do cursor na linha de comando?

Em alguns sistemas Unix, posso digitar Ctrl-A ou Ctrl-E para ir para o início ou fim da linha. Em alguns sistemas Unix não consigo e ele apenas imprime ^A ou ^E, etc. O que controla se esse pressionamento de tecla funciona como esperado (mover-se pela linha de comando) ou imprimir o caractere ^A, ^E, etc.?

Responder1

Tudo depende da implementação específica do shell (você pode ter shell padrão diferente em sistemas diferentes ou até mesmo para usuários diferentes dentro de um único sistema, por exemplo, bash, ksh, tcsh, etc).

Também depende do próprio shell.

Por exemplo, o bash suporta dois modos: emacs e vi. Cada modo tem seus próprios atalhos (emacs ou vi). Para alterá-lo você deve executar set -o emacs(normalmente é o padrão) ouset -o vi

Você pode encontrar mais informações na documentação específica do shell.

Responder2

dr.

set -o emacs

ativará as combinações de teclas Ctrl-A, Ctrl-E, Ctrl-B, etc. emacs na maioria dos shells que você provavelmente usará.


O shell pode não ter nenhum recurso de edição de linha ou pode estar no vimodo de edição (o único especificado pelopadrão).

Quando não estiver no emacsmodo de edição, Ctrl-A e Ctrl-E não têm significado especial. Se a configuração echoe echoctlstty/termios estiverem ativadas, todas as teclas de controle que não forem tratadas de maneira especial serão exibidas na ^Anotação ^X"caret".

Muitos shells (como kshou zsh) determinarão o modo de edição padrão (vi ou emacs) com base nos valores VISUALe nas EDITORvariáveis ​​de ambiente (nesta ordem de precedência, e também no tratamento de variantes como vim, elvis, xemacs, etc).

Isso foi quebrado (de forma muito irritante!) em mksh, mas ainda é o caso em outros pdkshshells derivados.

Outros shells gostam bashou tcshpadronizam o emacsmodo de edição, mas isso também pode ser substituído no arquivo de configuração da biblioteca de edição de linha.

Para oreadlinebiblioteca usada por bashe muitos outros programas, os arquivos de configuração são ~/.inputrc(ou um arquivo especificado na INPUTRCvariável de ambiente) com um fallback /etc/inputrce as configurações são:

set editing-mode vi
set editing-mode emacs

Para a biblioteca editline/ libedit[1] usada por muitos programas BSD, o arquivo de configuração geralmente é~/.editrce as configurações são:

bind -v  # for vi
bind -e  # for emacs

[1] não deve ser confundido com olibeditlinereadline "work-alike" que fornece apenas um modo de edição emacs.

informação relacionada