Vim (~/.vimrc)

~/.vimrc modular - primeira parte

Categoria: Vim

Software: Vim

[ Hits: 19.036 ]

Por: Luís Fernando C. Cavalheiro


Aqui temos mais um Conf do Dino! Hoje nós iremos começar com o conceito de ~/.vimrc modular, ou seja, um ~/.vimrc que faz as configurações básicas no sistema e então usa plugins para gerar os ajustes finos. O padrão são os ~/.vimrc monolíticos, mas isso é grosseiro e pode afetar a inicialização do Vim.

Hoje vamos começar com o ~/.vimrc, que faz o grosso das configurações. Nesse mesmo arquivo nós temos uma chamada para um dos plugins a serem usados, o abbreviations.vim. Esse plugin é definido pelo usuário para ser carregado dinamicamente pelo ~/.vimrc.


"""""""""""""""""""" ~/.vimrc por lcavalheiro """"""""""""""""""""
"
" Autor: Luís Fernando Carvalho Cavalheiro (pessoal at profcavalheiro dot com)
" Versão: 0.4
" Licença: GPLv3
"
" O autor concede licença explícita para cópia, redistribuição e alteração
" deste arquivo nos termos explicitados pela licença GPLv3. Para obter uma
" cópia da licença, acesse http://www.gnu.org/licenses/gpl-3.0.html.
"
" Texto obrigatório
"
" This file is free software configuration code: you can redistribute it
" and/or modify it under the terms of the GNU General Public License as
" published by the Free Software Foundation, version 3..
"
" This configuration is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this configure rile.  If not, see <http://www.gnu.org/licenses/>.
"
"""""""""""""""""""" ~/.vimrc por lcavalheiro """"""""""""""""""""

"""""""""""""""""""" ~/.vimrc changelog """"""""""""""""""""
"
" 0.4 (20131008T191405-0300)
" Início da configuração de abreviaturas como plugins do vim
"
" 0.3 (20131008T181755-0300)
" Adicionada a linha que permite o uso do mouse no vim
"
" 0.2 (20131008T135851-0300)
" Estruturamento final do ~/.vimrc. Ajustes finais antes de divulgação
"
" 0.1 (20131008T120000-0300)
" Início da construção do ~/.vimrc. Estabelecimento do sistema de numeração
" (lançamento.versão.subversão). Primeiros cabeçalhos
"
"""""""""""""""""""" ~/.vimrc changelog """"""""""""""""""""

"""""""""""""""""""" ~/.vimrc índice """"""""""""""""""""
"
" 0) Definição de funções auxiliares
" 1) Configurações gerais
" 2) Interface do vim
" 3) Cores e fontes
" 4) Texto e tabulações
" 5) Linha de status
" 6) Desfazer persistente
" 7) Carrega plugin de abreviaturas
"
"""""""""""""""""""" ~/.vimrc índice """"""""""""""""""""

"""""""""""""""""""" 0) Definição de funções auxiliares """"""""""""""""""""
"
" Retorna verdadeiro se o modo de copiar e colar estiver ativado
function! HasPaste()
        if &paste
                return 'PASTE MODE ON '
        en
                return 'PASTE MODE OFF '
        return ''
endfunction
"
"""""""""""""""""""" 0) Definição de funções auxiliares """"""""""""""""""""


"""""""""""""""""""" 1) Configurações gerais """"""""""""""""""""
"
" Usa as definições do vim, não as do vi
set nocompatible
"
" Define o tamanho do histórico de comandos do vim:
set history=1000
"
" Habilita o reconhecimento de arquivos
filetype plugin on
filetype indent on
"
" Recarrega o arquivo caso ele seja editado por um programa externo enquanto aberto
set autoread
"
" Habilita o uso do mouse no vim para cliques e coisas do tipo
set mouse=a
"
"""""""""""""""""""" 1) Configurações gerais """"""""""""""""""""

"""""""""""""""""""" 2) Interface do vim """""""""""""""""""""
"
" Ativa o menu WiLd (entre outras coisas, ativa <Ctrl>n e <Ctrl>p para navegar entre as correspondências da busca
set wildmenu
"
" Sempre mostra a posição atual do cursor
set ruler
"
" Altura da barra de comandos
set cmdheight=2
"
" Configurando a tecla <Backspace> para o que ela tem que fazer
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
"
" Destaca os resultados da busca
set hlsearch
"
" Habilita expressões regulares
set magic
"
" Destaca pares de colchetes ao passar o cursor, e configura o tempo do destaque em décimos de segundo
set showmatch
set mat=10
"
"""""""""""""""""""" 2) Interface do vim """""""""""""""""""""

"""""""""""""""""""" 3) Cores e fontes """"""""""""""""""""
"
" Ativa a numeração das linhas
set number
"
" Habilita o destaque de sintaxe
syntax enable
"
" Esquema de cores do vim
colorscheme desert
set background=light
"
" Desativa a quebra de linha automática (comentado por padrão)
set nolinebreak
"
" Permite a navegação dentro de uma mesma linha longa com j e k
set wrap
"
"""""""""""""""""""" 3) Cores e fontes """"""""""""""""""""

"""""""""""""""""""" 4) Texto e tabulações """"""""""""""""""""
"
" Insere espaços no lugar de caracteres de tabulação
set expandtab
"
" Uso inteligente de tabulações
set smarttab
"
" Define uma tabulação como sendo oito espaços
set shiftwidth=8
set tabstop=8
"
"""""""""""""""""""" 4) Texto e tabulações """"""""""""""""""""

"""""""""""""""""""" 5) Linha de status """"""""""""""""""""
"
" Sempre mostra a linha de status
set laststatus=2
"
" Formato da linha de status
set statusline=\ %{HasPaste()}\ Arquivo:\ %F%m%r%h\ %w\ \ Diretório\ de\ trabalho:\ %r%{getcwd()}%h\ -\ Linha:\ %l\ -\ Coluna:\ %c
"
"""""""""""""""""""" 5) Linha de status """"""""""""""""""""

"""""""""""""""""""" 6) Desfazer persistente """"""""""""""""""""
"
" Preserva o histórico do desfazer após o fim da sessão atual salvando-o em um arquivo
set undodir=~/.vim/undobackups
set undofile
"
"""""""""""""""""""" 6) Desfazer persistente """"""""""""""""""""

"""""""""""""""""""" 7) Carrega plugin de abreviaturas """"""""""""""""""""
"
" Se existir, carrega o plugin de abreviaturas. Eu poderia criá-lo aqui, mas o
" bom senso me impede de fazê-lo.
"
" COMO FUNCIONA
" O plugin ~/.vim/plugin/abbreviations.vim funciona como um
" meta-carregador de abreviaturas. Ele não carregará as abreviatuas per se,
" mas criará abreviaturas no modo de comando que permitirão carregar os
" conjuntos definidos de abreviaturas.
if filereadable(expand("~/.vim/plugin/abbreviations.vim"))
        source ~/.vim/plugin/abbreviations.vim
endif
"
"""""""""""""""""""" 7) Carrega plugin de abreviaturas """"""""""""""""""""
  


Comentários
[1] Comentário enviado por leandro em 09/10/2013 - 16:24h

Interessante!

No aguardo da segunda parte...

[2] Comentário enviado por lcavalheiro em 09/10/2013 - 16:31h

A segunda parte vai se aprofundar no conceito de módulos. Basicamente, serão plugins que podem ser carregados dinamicamente conforme a necessidade. Eu vou demonstrar isso com o abbreviations.vim, mas qualquer um inteligente o suficiente para perceber que p -> q é verdadeiro sempre que p for falso vai entender como extrapolar para qualquer necessidade.

[3] Comentário enviado por removido em 10/10/2013 - 10:37h

Que "vimrc" organizado! O meu é uma bagunça. rs

Funcional! Vou aplicar algumas linhas aqui.

Mas "set background=light" não dá. Pra mim tem que ser "dark". rs

[4] Comentário enviado por lcavalheiro em 10/10/2013 - 10:56h


[3] Comentário enviado por izaias em 10/10/2013 - 10:37h:

Que "vimrc" organizado! O meu é uma bagunça. rs

Funcional! Vou aplicar algumas linhas aqui.

Mas "set background=light" não dá. Pra mim tem que ser "dark". rs


Eu uso background light porque eu configuro os emuladores de terminal para funcionar com fundo branco (eu uso muito o computador em ônibus e coisa e tal, e usar no fundo preto forçaria demais a vista). Mas pra quem prefere o fundo preto tradicional, é melhor mesmo deixar o set background em dark.

Mas o meu xodó mesmo é o set statusline ;-)

[5] Comentário enviado por removido em 10/10/2013 - 11:00h

Sim, dependendo da situação podemos adaptar.
Poder adaptar também é liberdade. Isso que é o bom.

[6] Comentário enviado por lcavalheiro em 10/10/2013 - 11:04h


[5] Comentário enviado por izaias em 10/10/2013 - 11:00h:

Sim, dependendo da situação podemos adaptar.
Poder adaptar também é liberdade. Isso que é o bom.


Pois é, e é por isso que mesmo um conf tão inocente eu coloco sob GPLv3.

[7] Comentário enviado por removido em 10/10/2013 - 11:45h

Aquela linha de código que você mostrou:

-------
:ab ,1 <div></div><Left><Left><Left><Left><Left><Left>
-------

Colocando no final "<cr>", faz o "</div>" dar um salto para a próxima linha, fincando assim:
"<div>"
"</div>"

Ficou melhor ainda!

[8] Comentário enviado por lcavalheiro em 10/10/2013 - 11:51h


[7] Comentário enviado por izaias em 10/10/2013 - 11:45h:

Aquela linha de código que você mostrou:

-------
:ab ,1 <div></div><Left><Left><Left><Left><Left><Left>
-------

Colocando no final "<cr>", faz o "</div>" dar um salto para a próxima linha, fincando assim:
"<div>"
"</div>"

Ficou melhor ainda!


Dá pra fazer algumas misérias com o abbreviature. Se no modo de comandos você digitar ",1 " vai acabar inserindo o <div>\n</div> no comando. Evite isso com iab, que faz com que a abreviatura seja lida somente no modo de inserção.

[9] Comentário enviado por removido em 10/10/2013 - 11:56h

Essa também é uma solução.

E geralmente, em minhas abreviações, eu quero mesmo que funcione no Insert mode.
VLW Luíz!

[10] Comentário enviado por lcavalheiro em 10/10/2013 - 11:58h


[9] Comentário enviado por izaias em 10/10/2013 - 11:56h:

Essa também é uma solução.

E geralmente, em minhas abreviações, eu quero mesmo que funcione no Insert mode.
VLW Luíz!


Como você usa vimrc monolítico (tudo dentro dele e que se foda), nem pode parecer importante, mas existem abreviaturas apenas para o modo de comandos. A utilidade delas: vimrc's modulares, pois um
:cab VOLSyntax source arquivocomabreviaturas.vim
É trivialmente muito útil


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts