setas de navegação no terminal linux

0

Eu tenho o ubuntu atual do LTS e mais uma vez notei algo errado. No momento, na instalação padrão, CTRL + [esquerda / direita] não pula com a palavra. Um pouco estranho, se não me engano, eu acho que ele estava funcionando corretamente no padrão freebsd como 10 anos atrás. De qualquer forma, parece que mesmo a esquerda e a direita não funcionam corretamente por padrão! Se eu digitar:

pxd[LEFT][LEFT][DEL]w[ENTER]

então eu recebo pwd , obviamente (espero?) O que eu notei agora é que ele não funciona dessa maneira em um aplicativo simples de linha c ++ cmd. Aqui está o código de exemplo:

#include <iostream>
#include <string>
using namespace std;
int main()
{
        string s;
        getline(cin, s);
        cout << "\n\n{\n" << s << "\n}" << endl;
}

agora compile e execute: g++ test.cpp -o test && ./test e insira a mesma sequência de teclas que resultou em pwd no bash. De repente não vai funcionar. Eu recebo essa bagunça: p[3~w

O que há de errado com o terminal em todos os * nixes?

    
por Pavel 02.08.2016 / 07:13

1 resposta

1

Funções simples, como o método getline() , usam o modo cozido do driver tty do kernel, que possui apenas alguns recursos básicos de edição de linha (backspace, ^W para excluir uma palavra etc.), mas sem suporte para setas ou algo parecido.

Para obter recursos de edição de linha completa, você deve usar a biblioteca readline em vez de getline() .

    
por 02.08.2016 / 09:14