VIM oferece mais modos do que o vi (que oferece apenas os modos “normal”, “inserir” e “linha de comando”). Estes modos adicionais tornam o VIM mais poderoso e mais fácil de usar; por isso, os utilizadores do vim devem pelo menos estar conscientes de que eles existem. (NOTA: Se alguma vez entrar num modo com o qual não esteja familiarizado, pode normalmente premir ESC para voltar ao modo normal.)
Aqui está uma breve visão geral de cada modo disponível no vim:
normal | Para navegação e manipulação de texto. Este é o modo em que o vim normalmente começará, ao qual se pode normalmente voltar com ESC. | :help Normal-mode |
insert | Para inserção de novo texto. A principal diferença do vi é que muitos comandos “normais” importantes também estão disponíveis no modo de inserção – desde que se tenha um teclado com meta teclas suficientes (tais como Ctrl, Alt, Windows-key, etc.). | :help Insert-mode |
visual | Para navegação e manipulação de selecções de texto, este modo permite-lhe executar a maioria dos comandos normais, e alguns comandos extra, em texto seleccionado. | :help Visual-mode |
select | Similiar ao visual, mas com um comportamento mais semelhante ao do MS Windows. | :help Select-mode |
command-line | Para introduzir comandos de editor – como os comandos de ajuda na 3ª coluna. | :help Command-line-mode |
Ex-mode | Similiar ao modo de linha de comando mas optimizado para processamento em lote. | :help Ex-mode |
Cada modo é descrito abaixo.
inserir (e substituir)Editar
No modo inserir pode digitar novo texto. No modo clássico vi o modo inserir era apenas isso: inserir texto e nada mais. O Vim faz uso de muitas meta teclas em teclados modernos; com um vim correctamente configurado, as teclas do cursor devem funcionar em modo inserir.
modo inserir pode ser alcançado de várias maneiras, mas algumas das mais comuns são <a> (anexar depois do cursor), <i> (inserir antes do cursor), <A> (anexar no fim da linha), <I> (inserir no início da linha), <C> (mudar para fim de linha), e <s> (substituir caracteres).
Se desejar editar texto seleccionando e substituindo, como é comum em muitos editores baseados em GUI, <C> faz bem. O texto seleccionado é apagado antes de entrar no modo inserir.
normal (comando)Editar
sem utilizar a interface evim este é o modo padrão para vim (vim inicia no modo normal). Tudo o que o utilizador escreve em modo normal é interpretado como comandos (incluindo os que mudam o utilizador para outros modos).
Se vim é iniciado como evim (evim na linha de comando), vim mantém o utilizador em modo de inserção o tempo todo. O modo normal pode ser alcançado para comandos individuais premindo <Ctrl-O> seguido do comando desejado. Após um comando, o utilizador regressa ao modo de inserção. (Cada comando normal deve ser iniciado primeiro premindo <Ctrl-O>). Também é possível entrar no modo de comando a partir do modo de inserção premindo a tecla Esc.
visualEdit
Existem três tipos diferentes de realce no modo visual. Cada um permite que o utilizador destaque o texto de diferentes maneiras. Comandos que normalmente afectam apenas um caracter, linha, ou área afectarão o texto realçado (tais como alterar o texto para maiúsculas (<Ctrl-~>), eliminação de texto (<d>), linhas de travessão (>>), linhas de travessão (><<, e =), e assim por diante).
Existem três (sub)tipos de modos visuais que são visuais, block-visual , e linewise-visual
modo visual simplesEdit
O modo visual simples é iniciado premindo ‘v’ no modo normal. A qualquer momento, premindo ESC ou <v> deixará o modo VISUAL sem realizar uma operação. Os comandos de movimento alteram a área de selecção, enquanto outros comandos irão geralmente executar a operação esperada no texto (há algumas excepções onde o comportamento irá mudar ou onde o comando não irá funcionar, mas se não fizer o que esperava pode sempre desfazer com <u>).
block visual modeEdit
block-visual é iniciado premindo <Ctrl-V> (ou <Ctrl-Q> em algumas versões windows. Se nenhuma destas obras utilizar “:help visual-block” para descobrir como). Os blocos visuais mantêm sempre uma selecção rectangular, destacando apenas colunas específicas de caracteres em várias linhas. Neste exemplo a seguir o utilizador quer colocar um traço em cada número de telefone entre o segundo e o terceiro campo numérico:
O utilizador primeiro move o cursor para o topo da coluna (pode começar por baixo, se quiser).
p>p>Next, prima <Ctrl-V>. Isto coloca-o em modo visual em bloco (VISUAL BLOCO aparece no fundo para lhe dizer em que modo visual se encontra). A seguir, desça para a linha de fundo desejada. Pode ver uma única coluna destacada neste exemplo, mas pode mover-se para a direita ou esquerda e destacar mais colunas.br>
neste caso, o utilizador quer alterar os espaços para traços. Para alterar o texto, premimos ‘c’. Os espaços desaparecem todos, e as alterações são mostradas apenas na linha actual enquanto digitamos:
p> quando pressionamos <ESC>, no entanto, a alteração é duplicada em todas as linhas.
(Nota: se quiser simplesmente inserir texto em vez de o alterar, terá de usar ‘<I>’ ou ‘<A>’ em vez de ‘<i>” ou ‘<a>”.)
modo visual linewiseEdit
no modo visual linewise-visual, digite por <Shift-V>, linhas inteiras são realçadas. Caso contrário, funciona geralmente como o modo visual simples.
selectEdit
like the visual mode but with more CUA like behavior. Isto significa que se escrever um único carácter, substitui a selecção. Claro que se perde toda a operação chave na selecção como <U> para fazer uma selecção em maiúsculas.
Este modo é normalmente activado por:
:behave mswin
que é o padrão para instalações MS-Windows. Pode obter o modo normal com
:behave xterm
linha de comandoEdit
Na linha de comando pode executar comandos Ex, introduzir padrões de pesquisa, e introduzir comandos de filtro. No fundo, aparece uma linha de comando onde se pode introduzir o comando. Ao contrário do vi – vim suporta teclas de cursor, o que torna a introdução de comandos muito mais fácil. Após um comando, o editor volta ao modo normal.
É possível introduzir um comando Ex, digitando dois pontos: no modo normal. Alguns exemplos incluem:
:set number:substitute/search/replace/ig
P>Pode introduzir um padrão de pesquisa escrevendo uma barra / para pesquisar para a frente, ou um ponto de interrogação ? para pesquisar para trás. Pode usar as expressões regulares expandidas do vim nestes padrões de pesquisa. Por exemplo,
/word
irá saltar para a próxima ocorrência de “palavra” (mesmo que seja “espada” ou “sem palavras”), mas
/\<word\>
irá saltar apenas para uma palavra completa “palavra” (não “espada” ou “sem palavras”).
pode introduzir um filtro digitando ! seguido de um comando de movimento, depois um comando de shell para correr sobre o texto capturado pelo movimento. Por exemplo, em Linux e outros sistemas operativos do tipo UNIX, digitando
!22jsort
irá ordenar as linhas actuais e 22 seguintes com o comando sort system. A mesma coisa pode ser feita com
:.,.+22!sort
Na verdade, vim cria o comando acima se seguir o primeiro exemplo!
Ex-modeEdit
O modo Ex é semelhante ao modo de linha de comando, uma vez que também lhe permite introduzir comandos Ex. Ao contrário do modo de linha de comando, não regressará automaticamente ao modo normal. Pode introduzir um comando Ex digitando um Q no modo normal e deixá-lo novamente com o comando :visual. Note que o modo Ex foi concebido para processamento em lote e como tal não suportará mapeamentos ou edição de linha de comando.
Para processamento em lote o modo Ex é normalmente iniciado a partir do exterior, chamando o editor com a opção “-E”. Aqui está um exemplo real ao vivo da especificação do RPM Package Manager:
vim -E -s Makefile <<-EOF :%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/ :%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/ :%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/ :update :quitEOF
O RPM usa o Bash como linguagem de script que torna o exemplo um pouco difícil de entender uma vez que duas linguagens de script diferentes são misturadas num único ficheiro.
vim -E -s
inicia o vim em modo Ex melhorado que permite comandos mais avançados do que o modo Ex compatível com o vi (que é iniciado comvim -e -s
<<-EOF
diz a bash para copiar todas as linhas que se seguem na entrada padrão do programa externo recém-iniciado. O ‘-‘ diz à concha para retirar os caracteres do separador.:
são linhas com comandos Ex que vim irá executar. O : é opcional mas útil quando duas linguagens de script são misturadas num ficheiro:update
Um erro dos principiantes é esquecer-se de guardar o ficheiro após a alteração – assumindo falsamente que isto acontece automaticamente.:quit
Por último, não menos importante: não se esqueça de realmente sair do vim novamente.EOF
marca o fim do redireccionamento de entrada padrão – a partir de agora, bash executará novamente o próprio comando.
Se a sua shell não permitir tal redireccionamento de entrada padrão, pode sempre usar uma abordagem mais clássica ao redireccionamento de E/S usando dois ficheiros:
vim -E -s Makefile <Makefile-Fix1.vim
E se não tiver disponível nenhum redireccionamento de entrada padrão, então pode tentar a opção -c em combinação com o comando source:
vim -E -s -c "source Makefile-Fix1.vim" Makefile
Com o modo Ex melhorado muitas tarefas classicamente executadas por awk ou sed podem ser feitas com o vim e muitas vezes melhor:
- awk e sed são orientadas para stream – só lêem o ficheiro do princípio ao fim enquanto o vim é orientado para buffer – pode avançar e recuar no ficheiro como quiser.
- as expressões regulares do vim são mais poderosas do que as expressões awk e sed – por exemplo, vim pode corresponder em várias linhas e suporta zero correspondências.
br>
0 comentários