Pergunta

Eu sou bastante novo em programação, mas eu quis saber como editores de texto shell como vim, emacs, nano, etc são capazes de controlar a janela de linha de comando. Eu sou basicamente um programador do Windows, talvez por isso é diferente em * nix. Tanto quanto eu sei, é apenas possível imprimir texto a um console, e pedir para a entrada. Como editores de texto criar uma janela editável navegável em um ambiente de linha de comando?

Foi útil?

Solução

Ao usar bibliotecas como o seguinte que, por sua vez, sequências de caracteres uso de escape

NAME
       ncurses - CRT screen handling and optimization package

SYNOPSIS
       #include 

DESCRIPTION
       The  ncurses library routines give the user a terminal-independent 
method of updating character screens with reasonable optimization.  This 
implementation is ‘‘new curses’’ (ncurses) and is the approved replacement 
for 4.4BSD classic curses, which has been discontinued.

[...snip....]

       The ncurses package supports: overall screen, window and pad 
manipulation; output to windows and pads; reading terminal input; control 
over terminal and curses input and output  options;  environment query 
routines; color manipulation; use of soft label keys; terminfo capabilities; 
and access to low-level terminal-manipulation routines.

Outras dicas

Resposta curta: há bibliotecas para isso (como maldições, gíria)

.

resposta mais longa:. Fazendo coisas como saltar ao redor com o cursor ou mudar as cores são feito imprimindo sequências de caracteres especiais (chamados de escape-secquences, porque eles começam com o caractere ESC)

ncurses pode ser um bom ponto de partida.

Existe um protocolo antigo chamado vt100 com base em uma "VT100" terminal. É usado códigos começando com fuga para a posição do cursor de controle, cor, limpar a tela, etc.

É também a forma como você se prompts colorido.

O Google VT100 ou "códigos de escape do terminal"

edit: Eu pesquisei isso por você: http: //www.termsys.demon .co.uk / vtansi.htm

Você também vai notar isso se você digitar "editar" em um console de linha de comando do Windows. Este "recurso" não é exclusivo para unix-like sistemas, embora os conceitos para manipular o console do Windows dessa forma são bastante diferentes no unix.

Em sistemas Unix, uma janela do console emula um antigo terminal serial (geralmente um VT100 ) . Você pode imprimir caracteres de controle especiais e seqüências de escape para mover o cursor, alterar cores, e fazer outros efeitos especiais. Existem bibliotecas para ajudar a lidar com os detalhes; ncurses é o mais popular.

No Windows, o [API Win32 Console] ( http://msdn.microsoft.com/en-us/library/ms682073 (VS.85% 29.aspx) proporciona uma funcionalidade semelhante, mas de uma maneira um pouco diferente.

Digite "c: \ winnt \ system32 \ edit" ou "c: \ windows \ system32 \ editar" na linha de comando, e você vai ser mostrado um editor de texto linha de comando.

As pessoas estão mais direito sobre o personagem ESC sendo usado para controlar a tela de comando, mas alguns programas mais antigos também personagens escrever directamente para o espaço de memória utilizado pela tela de linha de comando do Windows.

A fim de controlar a janela de linha de comando, você costumava ter que escrever as suas próprias formas de janelas, caixa de entrada, menus, etc. Você também teria que envolver todos os que em um grande laço para manipulação de eventos.

Mais específico do Windows linha de comando, o aplicativo normalmente chama DOS ou BIOS funções que fazem o mesmo. Às vezes, o apoio código de comando ANSI está disponível, às vezes não é (dependendo exata versão MS OS e se é ou não está configurado para carregá-lo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top