Então, para que os plugins criados por você (arquivos.vim) sejam executados, edite o arquivo .vimrc (note que ficará oculto) no seu home, colocando a seguinte linha no início do seu conteúdo:
so ~/.vim/plugin/mysave.vim
Salve, feche e inicie o
vim como preferir (vi, vim, gvim, etc). É desejável que se apresente o seguinte erro:
------------------------------------------------
Error detected while processing .vimrc:
Line 1:
E484: Can't open file ~/.vim/plugin/mysave.vim
------------------------------------------------
Isso é ótimo! Indica que ao ser iniciado, o vim usou o arquivo
de referência e está procurando pelo arquivo "mysave.vim"! Como ele não existe ainda, o programa exibiu um erro previsível. O código do erro pode variar de acordo com a sua versão.
Agora, saia do vim e crie um diretório de backup no seu home, para que o backup dos seus códigos possa ser armazenado sempre aí:
$ mkdir ~/Backup
OBS: Para meu controle, os nomes dos meus diretórios sempre iniciam
com letra maiúscula e os arquivos com letra minúscula (sendo
visualmente rápido identificá-los), contudo, coloque o nome que
desejar, mas não se esqueça que o conteúdo do mysave.vim se refere
a um diretório
Backup. Logo, se o nome do diretório criado
aqui for diferente, ele deve ser atualizado no mysave.vim.
Vamos agora criar o plugin que chamei de
mysave. Entre no
diretório apresentado, com o comando:
$ cd ~/.vim/plugin
Se o diretório
~/.vim/plugin ainda não existe, pode ser que
os pacotes necessários para a execução de plugins não tenham sido
instalados no seu SO, neste caso, recomendo verificar os pacotes
oferecidos para vi, vim e gvim da sua distribuição, e instalá-los.
O VI é o editor original e clássico criado unicamente para Unix, o
vim é o VI Improved (melhorado), que permite uma série de novos
recursos, e o gvim é o vim de interface gráfica, com barras de
ferramentas, menus clicáveis, seleção by mouse, etc. O interessante
é que criando o .vimrc e o plugin, os três absorverão os recursos
adicionados no mysave.vim.
Então, dentro do diretório ~/.vim/plugin, crie um arquivo com o
nome de mysave.vim e coloque o seguinte texto como conteúdo (não
modifique nada por enquanto, incluindo as aspas duplas!):
" mysave.vim, by Douglas F. Azevedo - 2000
set tabstop=4
set shiftwidth=4
set columns=90
set lines=35
set number
set autoindent
set tabstop=4
set shiftwidth=4
set smarttab
set textwidth=80
set backup
set backupdir=~/Backup
" COMANDOS
" ---------------
" <F2> - Salva o arquivo corrente
" <F3> - Salva o arquivo com um outro nome
" <F10> - Sai (se o arquivo foi salvo)
" <F11> - Sai (forçadamente, sem salvar)
if exists("mysave")
finish
endif
let mysave=1
" inoremap=modo texto; map=modo comando
" Salva o arquivo corrente
inoremap <F2> <C-O>:call MSave()<CR>
map <F2> <C-O>:call MSave()<CR>
" Salva o arquivo com um outro nome
inoremap <F3> <C-O>:call MSaveAs()<CR>
map <F3> <C-O>:call MSaveAs()<CR>
" Saída rápida:
inoremap <F10> <C-O>:call MQuit() <CR>
map <F10> <C-O>:call MQuit()<CR>
" Saída rápida forçada!
inoremap <F11> <C-O>:call MRealQuit() <CR>
map <F11> <C-O>:call MRealQuit() <CR>
function! MSave()
if expand("%") == ""
if has("gui_running")
let fname = input("SALVO! - Pressione <ENTER>")
browse write
else
let fname = input("-> Salvar como: ")
if fname == ""
return
endif
execute "write " . fname
endif
else
let fname = input("SALVO! - Pressione <ENTER>")
write!
endif
endfunction
function! MSaveAs()
if has("gui_running")
browse saveas
else
let fname = input("-> Salvar como: ")
if fname == ""
return
endif
execute "w " . fname
endif
endfunction
function! MQuit()
execute "quit"
endfunction
function! MRealQuit()
execute "quit!"
endfunction
Repare que os comandos são conhecidos, o :w é equivalente ao
: write, o :q é equivalente ao :quit; normalmente usamos o menor
comando equivalente para ganharmos um pouco de tempo, porém
tanto no script quanto na hora de salvar, você pode digitar :w
ou :write - é exatamente a mesma coisa. Eu preferi usar os nomes
maiores aqui para descrever melhor o que está acontecendo em cada
função.
Um detalhe importante acerca das funções usadas no vimscript é que
elas devem ter o nome iniciado obrigatoriamente por letra maiúscula
depois da palavra reservada
function! e o resto pode ser deduzido por qualquer programador com certa experiência.
Os comentários do vimscript são as aspas duplas no início da linha, e os comandos que estão implementados aí são os seguintes:
- <F2> - Salva o arquivo corrente;
- <F3> - Salva o arquivo com um outro nome;
- <F10> - Sai (se o arquivo foi salvo);
- <F11> - Sai (forçadamente, sem salvar).
Além destes comandos, podemos observar alguns ajustes no início do arquivo, estes são os ajustes finos do vim; o "set number" e o "tabstop" mencionados antes foram inseridos aí. Caso ainda não conheça os comandos de ajustes usados, vale a pena ler uma breve explicação de alguns:
- set number: exibe os números das linhas do arquivo em edição.
- set autoindent: utiliza identação automática de acordo com a linguagem usada.
- set tabstop=4: ajusta a largura de tabulação para 4 espaços.
- set shiftwidth=4: ajusta a largura das paradas dos recuos para 4 espaços
- set smarttab: utiliza "tabulação inteligente".
- set textwidth=80: faz com que o texto seja quebrado para uma outra linha na edição quando passar de 80 colunas.
- set backup: diz para o vim criar uma cópia do arquivo editado.
- set backupdir=~/Backup: Indica o local onde será colocada a cópia.
- set columns=90: (em caso de GUI) ajusta a largura da janela para 90 colunas.
- set lines=35: (em caso de GUI) ajusta a altura da janela para 35 linhas.
Se os pacotes estão instalados e os arquivos estão corretamente editados nos locais adequados, então o vi, vim, e o gvim já estão prontos para executar estas funções. Agora é só abrir ou criar arquivos, salvá-los usando as teclas mencionadas e verificar se foi deixada uma cópia de segurança do arquivo no seu diretório ~/Backup. Não é necessário reiniciar a máquina, nem a interface ou algum processo.
OBS: Caso o número das linhas não tenha aparecido ao iniciar o vim ou uma das funções ativadas pelo F2, F3 etc não esteja funcionando, acrescente a linha no início do seu
~/.vimrc:
set nocompatible
Isso faz com que alguma tecla protegida pelo vim seja "liberada" para uso das funções criadas no mysave.vim.