Vim

Origem: Tex-Br, a enciclopédia livre.

O vim é um melhoramento do editor padrão de sistemas Unix, o vi, e está presente em ambientes pouco amigáveis como sistemas contidos em disquetes. Ao lado do emacs possui uma quantidade funcionalidades incalculável. É totalmente personalizável.

Veja nas seções seguintes algumas personalizações que você pode fazer para deixar o vim mais apropriado para editar arquivos tex.

Conteúdo

Mapeamentos

Mapeamentos para o LaTeX

Editando o arquivo de configuração do vim '.vimrc' podemos criar algumas facilidades para edição de códigos LaTeX. O arquivo de configuração fica localizado dentro da pasta principal do usuário, tanto no windows quanto no GNU/Linux

~/.vimrc

Os mapeamentos nada mais são do que atribuições de atalhos, que inclui teclas de função e ou combinações de teclas. Observe que as linhas iniciadas com aspas são comentários, e portanto ignoradas pelo sistema.

" ==============================================
"          seção para comandos latex
" ==============================================
" se você já tem alguma função para fechar parênteses
" apague no local  apropriado
"
" Fechamento automático de parênteses, chaves e colchetes
imap { {}<left>
imap ( ()<left>
imap [ []<left>

" pular fora dos parênteses, colchetes e chaves - use para
" mover para direita ou esquerda em modo insert
" Ctrl+l move para direita - Ctrl+h move para esquerda
imap <c-h> <esc><left>a
imap <c-l> <esc><right>a

" as funções abaixo mudam se o fechamento de parênteses for modificado
" cria itemize
imap <F2> \begin{itemize<right><cr>\item{<right><cr>\end{itemize<esc>ki
imap <F3> \begin{enumerate<right><cr>\item{<right><cr>\end{enumerate<esc>ki
imap <F4> \begin{center<right><cr><cr>\end{center<esc>ki
imap <F5> \begin{verbatim<right><cr><cr><cr><cr>\end{verbatim<esc>kki
imap <F6> \begin{document<right><cr><cr><cr>\end{document<esc>kki 

nmap <F2> i\begin{itemize<right><cr>\item{<right><cr>\end{itemize<esc>ki
nmap <F3> i\begin{enumerate<right><cr>\item{<right><cr>\end{enumerate<esc>ki
nmap <F4> i\begin{center<right><cr><cr>\end{center<esc>ki
nmap <F5> i\begin{verbatim<right><cr><cr><cr><cr>\end{verbatim<esc>kki

imap <F7> <c-n>
" Da a sequencia a essa palavra
"imap <c-right> <c-x><c-n> 

" negrito
imap ,bf {\bf{
nmap ,bf {\bf{
" paa criar um negrito selecione e use Ctrl+b
" itálico
imap ,it {\it{
nmap ,it i{\it{
" para criar um itálico selecione e use um Ctrl+i
" enfatizar
imap ,em {\em{
nmap ,em i{\em{
" chapter
imap ,ch \chapter{
nmap ,ch i\chapter{
" section
imap ,se \section{
nmap ,se i\section{
" máquina de escrever
imap ,tt {\tt{
nmap ,tt i{\tt{
" footnote
imap ,fn \footnote{
nmap ,fn i\footote{


Outros Mapeamentos

Inserir números de linha

map ,n :%s/^/\=line('.').'   ' <cr>

Redimensionar a janela com ALT+seta à direita e esquerda

map <M-right> <ESC>:resize +2 <CR>
map <M-left> <ESC>:resize -2 <CR>

Mudar de janelas

map <C-J> <C-W>j
map <C-k> <C-W>k

Abreviações

iab - abreviações para o modo insert

iab tambem também
iab latex \LaTeX
iab linux GNU/Linux


Funções

Função para pular para uma linha qualquer

" ir para linha
" ir para uma linha expecífica
function! GoToLine()
let ln = inputdialog("ir para a linha...")
exe ":" . ln
endfunction
"no meu caso o mapeamento é com Alt-l
"use o que melhor lhe convier
imap <M-l> <C-o>:call GoToLine()<CR>
nmap <M-l> :call GoToLine()<CR>

Data Automática

" =============== DATA AUTOMÁTICA ===========================
" insira na em seus arquivos =   "ultima modificação:"
" em qualquer das três primeiras linhas
" não esquça de comentar o começo da linha, veja o exemplo abaixo
"
" %%% ultima modificação
" \documentclass[11pt,openany]{book}
" %%% Arquivo modelo LaTeX 
" %%% Autor: Seu Nome - <mail@dominio.org>
" %%% ultima modificação: Ter 12 Jul 2005 20:03:41 BRT
"
fun! SetDate()
  mark z
  if getline(1) =~ ".*ultima modificação:" ||
                          \ getline(2) =~ ".*ultima modificação:"  ||
                          \ getline(3) =~ ".*ultima modificação:"  ||
                          \ getline(4) =~ ".*ultima modificação:"  ||
                          \ getline(5) =~ ".*ultima modificação:"
     exec "1,5s/\s*ultima modificação: .*$/ultima modificação: " . strftime("%c") . "/"
  endif
  exec "'z"
endfun
"
"  abaixo a chamada a função de data que é chamada toda vez que você
"  salva um arquivo preexistente
"
fun! LastChange()
  mark z
  if getline(1) =~ ".*Last Change:" ||
                          \ getline(2) =~ ".*Last Change:"  ||
                          \ getline(3) =~ ".*Last Change:"  ||
                          \ getline(4) =~ ".*Last Change:"  ||
                          \ getline(5) =~ ".*Last Change:"
     exec "1,5s/\s*Last Change: .*$/Last Change: " . strftime("%c") . "/"
  endif
  exec "'z"
endfun
" coloquei duas opções (alteração e modificação), assim
" não tem perigo de você esquecer e o sistema
" não atualizar a data do salvamento, outra melhoria na função
" é que agora é válida para qualquer tipo de arquivo. se usar
" num html por exemplo insira um começo de comentário na linha
" da data e feche o comentário na próxima linha
"
"  abaixo a chamada a função de data que é chamada toda vez que você
"  salva um arquivo preexistente
au BufWritePre * call SetDate()
au BufWritePre * call LastChange()
"
"============ Fim da Data Automática ===================

Links Externos

Personal tools