“Eu estava com esse documento perdido nos confins do meu $HOME há séculos. Ele foi feito em Dezembro de 1999. Como minha página é o lugar definitivo para todas as inutilidades, é claro que este documento merece um cantinho nela. Boa leitura!”
-- Aurelio, Nov 2003
Respondendo às primeiras perguntas
- O que é um mouse?
-
De acordo com o "Webster's Revised Unabridged Dictionary (1913)", um mouse é:
Any one of numerous species of small rodents belonging to the genus Mus and various related genera of the family Murid[ae]. The common house mouse ({Mus musculus) is found in nearly all countries.
Tradução: Qualquer uma das várias espécies de pequenos roedores pertencentes ao gênero Mus e vários outros relacionados à família Murid[ae]. O rato (mouse) caseiro comum ({Mus musculus) é encontrado praticamente em todos os países.
- E o que é esse sem-mouse-HOWTO?
- Este documento descreve como trabalhar em um computador desprovido de mouse, rodando o sistema operacional Linux. O autor decidiu aposentar o mouse, tanto na interface texto (console) quanto na interface gráfica (XFree). Nesta condição, teve que aprender vários truques para ter a mesma facilidade de Copiar e Colar textos entre terminais e programas. Este documento descreve quais são estes truques para ajudar outros que também têm que usar o sistema sem mouse, ou por opção ou por motivos aleatórios.
- Por que não usar o mouse?
- Para quem usa a interface gráfica todo o tempo, não faz muito sentido. Mas para quem usa primariamente a interface texto e muito de vez em quando precisa da interface gráfica para rodar algum programa ou outro, o mouse não é um acessório obrigatório. De fato, após se acostumar com os procedimentos aqui descritos, o autor notou mais agilidade e menos dispersão no uso da máquina, ficando 100% do tempo com as mãos no teclado, sem aquela alternância insana entre os periféricos.
- Sou novato no Linux, eu vou conseguir entender este documento?
- Talvez. Aqui estão dicas de uso para vários programas. É necessário um conhecimento prévio destes programas para poder usufruir dos truques. Mas estas dicas não têm validade. Depois que você estiver mais acostumado com o Linux, volte e releia este documento, sempre que precisar.
- Por que eu deveria ler isso?
-
- Para se sentir à vontade numa máquina sem mouse;
- Para salvar seu pulso da inevitável tendinite;
- Para mostrar aos amigos suas habilidades no teclado;
- Para economizar dinheiro, não precisando mais comprar um mouse;
- Para dedetizar sua máquina, livrando-a de animais peçonhentos;
- Para ter uma razão para jogar fora o roedor e não ficar com remorso;
- Para apoiar e ajudar a divulgar a campanha "Morte ao Mouse!"; E o mais importante:
- Aumentar a produtividade, evitando todo o transtorno de copiar e colar um texto entre terminais, acompanhe a insanidade:
- ter que tirar a mão do teclado
- achar e agarrar o hamster, digo, o mouse
- mover o cursor por toda a tela
- clicar no botão esquerdo e segurá-lo
- mover o mouse para selecionar o texto
- soltar o botão
- voltar a mão para o teclado
- apertar Alt+F2 para ir ao outro terminal
- tirar a mão do teclado novamente
- achar e agarrar o mouse de novo
- movê-lo até o ponto desejado
- lembrar se é o botão do meio ou o da direita que cola
- apertar o botão
- voltar a mão ao teclado
- apertar Alt+F1 para voltar ao terminal original
- gastar segundos ou minutos preciosos tentando lembrar o que mesmo você estava fazendo antes desse malabarismo todo que roubou seu tempo e sua concentração.
- Você odeia ratos?
- Somente aqueles que têm um conector na ponta do rabo :)
- Mas assim, mais especificamente, do que se trata esse documento?
-
Este documento descreve como usar somente o teclado para fazer as seguintes tarefas:
- Copiar e Colar entre terminais
- Copiar e Colar entre programas
- Copiar e Colar usando o 'screen', o gerenciador de janelas do console
- No X, mover o cursor usando as setas e "clicar"
Como copiar e colar sem o mouse
Sem usar um programa auxiliar como o screen
(que será visto adiante), a única maneira de guardar um texto para depois reutilizá-lo em outro lugar é usar um arquivo temporário, que fará o papel do "buffer" do mouse. É muito simples:
Copiar: | Você grava o texto desejado no arquivo temporário |
Colar: | Você lê o conteúdo do arquivo temporário |
Dependendo de qual o programa que você está usando, ele tem como gravar em arquivo somente um trecho, ou uma seleção visual. O VI é um bom exemplo. Outros programas só têm opção de gravar um arquivo inteiro ou fazer um "dump", uma cópia completa de toda a tela.
Veremos como Copiar e Colar em cada programa, mas o primeiro passo é escolher que arquivo fará esse papel de ponte entre a Cópia e a Colagem. O seu nome deve ser curto, e de preferência deve estar no seu diretório $HOME. É bom também que seja um arquivo oculto (iniciado por um ponto). Sugestão: ~/.tmp
. Curto, oculto, fácil.
Se preferir, você pode ainda guardar este nome em uma variável de ambiente, para poder modificá-lo caso necessário. No shells ash, bash e zsh:
export ARQTMP="$HOME/.tmp"
Seguem agora os programas e como usar este arquivo neles.
Shell (linha de comando)
Bash
Copiar | |
---|---|
Saída de um comando | comando > ~/.tmp |
Linha de comando | echo "comando" > ~/.tmp |
Linha de comando (set -o vi) | <esc>v (chama o VI) |
Colar | |
Colar e editar um comando | ??? |
Colar executando um comando | `cat ~/.tmp` ou $(cat ~/.tmp) |
Linha de comando (set -o vi) | <esc>v (chama o VI) |
zsh
O zsh não tem um "modo VI", mas você pode emulá-lo colocando estas linhas no seu ~/.zshrc
:
edit-command() { if [[ -n "$BUFFER" ]] then echo $BUFFER > ~/.tmp2 BUFFER="vim ~/.tmp2;`< ~/.tmp2`" else BUFFER="vim ~/.tmp;`< ~/.tmp`" fi zle accept-line } zle -N edit-command bindkey "^[v" edit-command
Copiar | |
---|---|
Saída de um comando | comando > ~/.tmp |
Linha de comando | echo "comando" > ~/.tmp |
Linha de comando (set -o vi) | <esc>v (chama o VI) |
Colar | |
Colar e editar um comando | ??? |
Colar executando um comando | `< ~/.tmp` ou $(< ~/.tmp) |
Linha de comando (set -o vi) | <esc>v (chama o VI) |
Editores
Pico
Copiar | |
---|---|
Arquivo todo | Ctrl+O , depois digite ~/.tmp |
Colar | |
Arquivo todo | Ctrl+R , depois digite .tmp |
Vim
Copiar | |
---|---|
Arquivo todo | :w! ~/.tmp |
Texto selecionado | :'<,'> w! ~/.tmp |
Da linha 12 até a 15 | :12,15 w! ~/.tmp |
Da linha atual até o fim do arquivo | : .,$ w! ~/.tmp |
Da linha marcada 'a' até a marcada 'b' | :'a,'b w! ~/.tmp |
Colar | |
Arquivo todo | :r ~/.tmp |
Filtrar com comandos (bônus!) | |
Arquivo todo | :%!comando |
Texto selecionado (modo visual) | :'<,'>!comando |
Para facilitar, coloque estes mapeamentos no seu ~/.vimrc
e usa as teclas F7 e F8 para copiar e colar texto. Estes mapeamentos funcionam nos modos de comandos, inserção e visual. (Obrigado ao pessoal da lista de discussão do Vim pelo vmap)
imap <F7> <esc>:w! ~/.tmp<cr> map <F7> :w! ~/.tmp<cr> vmap <F7> yGo<esc>p:.,$w! ~/.tmp<cr>u`` imap <F8> <esc>:r ~/.tmp<cr> map <F8> :r ~/.tmp<cr>
Mail/News
Pine
O Pine usa o pico
como editor padrão. Mas também é possível configurá-lo para utilizar o editor de sua preferência. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.
mutt
O mutt usa o VI
como editor padrão, ou o conteúdo de $EDITOR
caso exista. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.
slrn
O slrn usa o VI
como editor padrão, ou o conteúdo de $EDITOR
caso exista. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.
Navegadores
lynx
Você pode configurar o editor de texto que o lynx usará indo na tela de opções (comando 'o'). Preencha o item "Editor", selecione a opção "Salvar opções no disco: [ ]" e finalmente "Aceitar Mudanças".
Copiar | |
---|---|
Página toda | Use o comando p , "salvar em arquivo local", ~/.tmp |
Fonte HTML | Use o comando \ , depois p , "salvar em arquivo local", ~/.tmp |
Colar | |
Em uma Caixa de Texto | Ctrl+V , depois Cole com o editor de texto |
links
Copiar | |
---|---|
Página toda | <ESC> , "File", "sAve as", ~/.tmp |
Colar | |
??? |
w3m
O VI
é o editor padrão do w3m. Você pode configurar outro indo na tela de opções (comando 'o'). Preencha o item "Editor" e aperte o botão "OK".
Copiar | |
---|---|
Página toda | Use o comando S , então digite ~/.tmp |
Fonte HTML | <ESC> , s , ~/.tmp |
Colar | |
Em uma Caixa de Texto | Seta para a direita, depois Cole com o editor de texto |
IRC
BitchX
Coloque a linha seguinte no seu arquivo de configuração do BitchX:
/alias colar /exec -o cat ~/.tmp
Copiar | |
---|---|
Conversas | Ligue o LOG, depois copie direto do arquivo de log |
Colar | |
No canal | Use o comando /colar |
tirc
Coloque a linha seguinte no seu arquivo de configuração do tirc:
/alias colar system $* cat ~/.tmp
Copiar | |
---|---|
Conversas | Ligue o LOG, depois copie direto do arquivo de log |
Colar | |
No canal | Use o comando /colar |
Para outro canal ou usuário | /colar -msg #canal ou /colar -msg nick |
Screen, o gerenciador de janelas do modo texto
O screen é um programa que permite trabalhar com janelas no modo texto. Ele faz de tudo: cria e alterna entre janelas, tem barra de status com data e hora, abrir mais de uma janela na mesma tela, "dormir" todas as janelas, monitoramento de atividades e o principal: é possível selecionar, Copiar e Colar texto somente usando o teclado, sem precisar de mouse ou arquivos temporários.
Este documento falará apenas sobre o Copiar & Colar, para saber sobre as outras características do screen, acesse https://aurelio.net/doc/coluna/.
Copiar & colar entre janelas do screen
O screen tem um esquema muito bacana de Copiar e Colar que te deixa selecionar visualmente o texto desejado (igual no Vim), e Colá-lo em qualquer outra janela do screen. É muito fácil, um pouco estranho numa primeira tentativa, mas acostuma. Acompanhe:
- Copiar
-
Ctrl+A
[
- Mova o cursor ao começo do teto desejado (use as setas ou hjkl)
Barra de Espaço
- Mova o cursor até o fim do teto desejado (use as setas ou hjkl)
Barra de Espaço
- Colar
-
Ctrl+A
]
Durante a seleção do texto, para mover-se basta utilizar as setinhas do teclado normalmente. Usuários de VI se sentirão em casa, pois vários do comandos de movimentação também funcionam durante a seleção. Já o Emacs é um pouco mais complicado (novidade... ;)
- Teclas do VI
-
h j k l 0 ^ $ w b e H M L + - G g | C-u C-d C-b C-f
- Teclas do Emacs
-
Direto da Man Page do screen:
Emacs style movement keys can be customized by a .screenrc command. (E.g. markkeys "h=^B:l=^F:$=^E") There is no simple method for a full emacs-style keymap, as this involves multi-character codes.
Tradução: Teclas de movimentação estilo Emacs podem ser configuradas com comandos no .screenrc. (Ex.: markkeys "h=^B:l=^F:$=^E") Não há nenhuma maneira simples de configurar todos os movimentos do Emacs, pois eles são compostos de múltiplos caracteres.
Copiar & colar entre uma janela do screen e outra fora do screen
O screen tem uma opção chamada 'bufferfile', que é um arquivo opcional para guardar o conteúdo da seleção visual. Coloque a seguinte linha no seu .screenrc:
bufferfile ~/.tmp
E use os seguintes comandos para Copiar/Colar no arquivo temporário:
Copiar: | Ctrl+A , > |
Colar: | Ctrl+A , < , Ctrl+A , ] |
O comando PrintScreen
O screen tem o comando 'hardcopy' que copia todo o conteúdo da tela para um arquivo. As teclas para fazer esse "dump" são:
Ctrl+A, h
Mas ao invés disso, é mais legal aproveitar a própria tecla 'PrintScreen' do teclado para disparar este comando. Para isso, basta colocar a linha seguinte no .screenrc:
bind \034 hardcopy
O comando 'hardcopy' copia a tela para o arquivo ~/hardcopy.n
, onde 'n' é o número da janela. Mas como temos apenas um arquivo temporário, basta "linkar" estes arquivos com o bom e velho ~/.tmp
:
cd $HOME ln -s hardcopy.0 ~/.tmp ln -s hardcopy.1 ~/.tmp ln -s hardcopy.2 ~/.tmp ln -s hardcopy.3 ~/.tmp ...
E assim vai, até o número de janelas que você normalmente usa.
Usando o XFree86 sem mouse!
Apesar de ter sido feita para funcionar com o mouse, também é possível utilizar a interface gráfica sem ele!
Além do já consagrado Alt+TAB para trocar janelas, e a possibilidade de configurar alguns atalhos ("hotkeys") para disparar programas, também é possível mover o ponteiro e simular "cliques" de todos os botões do mouse.
É muito simples: no X, aperte Shift+NumLock
para habilitar o modo "sem mouse". Nesse modo, usa-se o teclado numérico (aquele à direita) para se movimentar e "clicar", veja:
Teclas | Funções |
---|---|
78946123 | Move o ponteiro para todas as direções |
/ | Ativa o botão da esquerda |
* | Ativa o botão do meio |
- | Ativa o botão da direita |
5 | Clique (do botão ativado, qualquer que seja) |
+ | Duplo clique |
Enter | Triplo clique |
0 | Segura o botão (o que estiver ativado) |
, | Solta o botão |
Para dar um "clique" com o botão esquerdo, mova o ponteiro com os números, depois aperte a /
para selecionar o botão esquerdo, então aperte o 5
para clicar.
Para arrastar algo, movimente, depois /
para o botão da esquerda, depois 0
(zero) para segurar o botão. Movimente-se novamente até o ponto desejado então aperte ,
(vírgula) para soltar o botão e terminar o arrasto.
Nota 1: Para que este "mouse alternativo" funcione é preciso comentar a linha XkbDisable
na configuração do XFree.
Nota 2: Para teclados americanos (sem C cedilha) ao invés da vírgula é utilizada a tecla o ponto (.)
fvwm & fvwm2
O fvwm (e seu parente fvwm2) é um gerenciador de janelas extremamente leve e rápido, que além de outras características, permite configurar atalhos complementares que aceleram a movimentação do ponteiro com as setas do teclado, fazendo saltos! Adicione as linhas seguintes no ~/.fvwmrc
:
# 1/10 de uma tela: seta + Ctrl Key Left A C CursorMove -10 +0 Key Right A C CursorMove +10 +0 Key Up A C CursorMove +0 -10 Key Down A C CursorMove +0 +10 # 2% de uma tela: seta + Ctrl + Shift Key Left A CS CursorMove -2 0 Key Right A CS CursorMove +2 +0 Key Up A CS CursorMove +0 -2 Key Down A CS CursorMove +0 +2 # 1% de uma tela: seta + Ctrl + Alt Key Left A CM CursorMove -1 0 Key Right A CM CursorMove +1 +0 Key Up A CM CursorMove +0 -1 Key Down A CM CursorMove +0 +1
Feito isso, reinicie o fvwm e use as setas, segurando o Ctrl e veja o ponteiro correr pela tela! Apertando simultaneamente o Shift ou o Alt, os pulos têm tamanhos diferentes.
Mostre que você se libertou!
Dedetize sua máquina, roedores não serão bem-vindos novamente.
- Feche os buracos onde eles se escondem:
rm -f /dev/*mouse
- Limpe seus rastros imundos:
rm -f /etc/sysconfig/mouse
- Impeça-os de voltarem:
rpm -e gpm mouseconfig
Obrigado
Thomas Köhler, Eliphas Levi Theodoro, Rudá Tente de Moura e Guilherme W. Manika pela ajuda com os comandos e dicas.