Como editores de texto shell trabalho?
-
05-07-2019 - |
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?
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).