Explorando um pouco mais o VIM

Seguindo na experiência com o vim, continuando esta , vou tentar explicar melhor um pouco algumas questões. Em foco o .vimrc!

O .vimrc é o arquivo de configurações padrão do vim, que fica em sua pasta home(ou no diretoria de instalação do vim, caso seu usuario não tenha um na home). Vou explicando por exemplo, usando o meu .vimrc de hoje(acabei de editar):

set nu                 " enumera as linhas
set ruler              " mostra a posicao do cursor
set title               " mostra o nome do arquivo na barra de titulo
set t_vb=            " desabilita o alerta sonoro (chato)
set termencoding=utf8   " define todos os arquivos ocmo UTF-8
set nobackup       " nao grava os arquivos ~* de backup
set fdm=marker   " habilita o folding

O comando set serve para "preencher"(Settar…) uma variavel do vim. Caso um valor não seja especificado fica como verdadeiro(true). Lembrando que em todo caso 1 pode ser iqual a true enquanto 0 false. As aspas(") indicam um comentário.

set bs=2                " mexe com o backspace mas nao lembro o que faz
set sm                  " colore chaves/parenteses casados
set ai cindent sw=4     " configura a identacao
set is ic               " configura a busca
set et st=4 ts=4        " configura o TAB
set backspace=indent,eol,start 

Você pode settar variáveis dinâmicamente dentro do vim, usando :set var=value 

syntax on     " habilita a colocaracao de sintaxe
set autowrite "Salva automaticamente
set foldmethod=indent
set completeopt=longest,menuone
let php_htmlInStrings=1 "Reconheçe html dentro de strings php
let php_folding=1 "Folding baseado na syntax php
set dictionary=~/.php-dict " dicionario php

O completeopt server para ter um quadro(popup) de codecomplete (ctrl+X ctrl+<outra letra>) mais amigavel e menos intrusivo e mais inteligente. php_htmlInString Colore sintaxe de html mesmo dentro de strings no php(isso eu nunca vi fora do vim!). O dictonary é usado no complete de palavras de dicionario (ctrl+x ctrl+k).  O php_folding sobrescreve o foldmethod.

" Improving mapping
map <C-B> :!php -l %<CR>
imap <Nul> <C-X><C-O>
imap <C-Nul> <C-X><C-O>
noremap L f$
noremap H F$
map <C-t> :tabnew<CR>
map <C-left> :tabp<CR>
map <C-right> :tabn<CR>

Aqui é mapeamento de teclas para atalhos, cuidado para não sobrescrever nenhum importante. imap serve para modo INSERT , map para modo de comando(padrão) e noremap eu nem lembro, mas é no padrão também.

Ao indicar teclas use <> como delimitador, e separe as teclas por - , o C representa o ctrl, Nul é o espaço. O que esta mapeado ai é o seguinte, na mesma ordem:

  • Ctrl+b roda no shell o comando php -l no buffer atual (%) e da enter (CR).
  • O segundo ignora
  • Ctrl+espaço  chama o complemento omni(mais inteligente, geralmente)
  • L é um atalho para comando f$
  • H para F$
  • Ctrl+t nova aba
  • Ctrl+left e ctrl+right navega entre abas

Notas: o ! indica para executar a linha no shell(:! dentro do vim); f<char> é um comando tipo find, que caracteriza um movimento até o proximo <char>. f$ vai até o próximo $. F$ é para trás, o $ anterior; Use abas;

imap ( ()<esc>i " autocompleta parenteses, chaves, colchetes, aspas
inoremap ( ()<esc>i
inoremap { {<Char-13>}<esc>i
inoremap [ []<esc>i
inoremap " ""<esc>i
inoremap ' ''<esc>i

Estes são mapeamentos para completar parenteses, colchetes, chaves, aspas assim que a primeira for inserida. Repare <esc> é como pressionar a tecla Esc , i é como executar o i (entra em modo de inserção).

E só para fechar:

" atalho para embaralhar letras quando alguem estiver olhando
map <F8> ggVGg?

" atalho para retirar ^M do final das linhas
map <F2> :%s/r//g<CR>

" aliases uteis para fechar o vim
cab W w| cab Q q| cab Wq wq| cab wQ wq| cab WQ wq| cab X x| cab Wqw wq| cab wqw wq

O Vim tem recursos demais, é facil se perder. Mas vale a pena a viagem.  De uma navegada em vim.org , em tips e scripts .

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>