22 de jul de 2013

Vim Scripting


    O Vimscript é um mecanismo para personalizar e estender o editor Vim.  Através dos scripts você pode criar ferramentas e simplificar as tarefas. 
    Geralmente o primeiro contato com o vimscript é através do arquivo /etc/vimrc, onde o vim lê esse arquivo quando inicia e executa os comandos. 

Imprimindo mensagens:
echo "Hello World" 
echom "Hello Marte"

Comentários: 
" exemplo de comentário

Setando opções:
    O set  pode ter as opções booleanas ("on" ou "off") ou que contêm algum valor. O number é uma opção booleana:
:set number " seta como on
:set nonumber " seta como off

Mapeando:
    É possível mapear as teclas e definir nossa própria tecla de atalho:
:map - x " ao apertar "-" temos o mesmo efeito do x (cortar a letra selecionada).
:map e >>4  " pressionando a tecla "e" pulamos 4 espaços.

    Podemos tb mapear as teclas no modo normal, visual e de inserção. 
:nmap n :set number " no modo normal
 Mapeia a tecla n para inserir números de linhas.

    No modo visual (aperte [ESC] + gv):
:vmap \ U 
Mapeia a tecla \ para executar a função U (uppercase).

    No modo de inserção:
:imap <c-d> dd
Mapeia a tecla Ctrl+D para deletar a linha selecionada.

     Mapeando sequencias de letras:
:nnoremap -c dd0 
Ao apertar o -c vai detelar a linha e entrar no modo de inserção.

Definindo Variáveis:
    O Vim possui vários tipos de variáveis disponíveis por prefixos:  $ para variáveis de ambiente, & para opções e @ para registros.
:echo "Home:" $HOME
:echo "Filetype:" &filetype
:echo "Register:" @a

     Você pode criar suas próprias funções:

:function ContadorDeLetras()
:    let len = strlen(getline("."))
:    echo len
:endfunction
:echo ContadorDeLetras()

     O script acima vai imprimir o número de caracteres da linha selecionada.


Primeiro Script:

primeiro.vim:
if has("gui_running")
    colorscheme desert
else
    colorscheme darkblue
endif

    Se estiver rodando o gvim o esquema de cores ficará como desert, se não, ficará com o tema azul escuro.

Executando:
    Para executar use o :source no modo de comando do vim:
:source /caminho/do/script/primeiro.vim

Codificando Python no Vim:
    Primeiro verifique se existe o suporte da linguagem python.
:echo has("python")

    Se aparecer o 1 no canto da tela quer dizer que vc possui a linguagem python.

segundo.vim
if exists("loader_related")
    finish
endif
let loaded_related = 1

function Contador()
python <<EOF

import vim

print "Tamanho dessa linha", len(vim.current.line)
EOF
endfunction

  O código acima faz a mesma coisa que o ContadorDeLetras(), conta os caracteres da linha selecionada.
    Para que o interpretador python leia o código é usado o EOF , todo o texto depois do <<EOF até o EOF será passado para o interpretador python.

Executando a função:
:source /caminho/do/script/segundo.vim
:call Contador()

terceiro.vim
function! GetHTML()
python << EOF
import vim, urllib2
from bs4 import BeautifulSoup
soup = urllib2.urlopen(vim.current.line).read()
print soup
EOF
endfunction

     Esse código vai imprimir o código fonte do site da linha atual (vim.current.line). 

Fontes:
http://learnvimscriptthehardway.stevelosh.com/
http://www.ibm.com/developerworks/br/library/l-vim-script-1/
http://vimdoc.sourceforge.net/htmldoc/usr_41.html#script
http://files.swaroopch.com/vim/byte_of_vim_v051.pdf
http://www.techrepublic.com/article/extending-vim-with-python/
http://codeseekah.com/2012/03/04/vim-scripting-with-python-lookup-ip-country/ 

0 comentários:

Postar um comentário