Funções
Funções
Fechamento automático de parênteses
" --------------------------------------
" Ativa fechamento automático para parêntese
" Set automatic expansion of parenthesis/brackets
inoremap ( ()<Esc>:call BC_AddChar(")")<cr>i
inoremap { {}<Esc>:call BC_AddChar("}")<cr>i
inoremap [ []<Esc>:call BC_AddChar("]")<cr>i
"
" mapeia Ctrl-j para pular fora de parênteses colchetes etc...
inoremap <C-j> <Esc>:call search(BC_GetChar(), "W")<cr>a
" Function for the above
function! BC_AddChar(schar)
if exists("k")
let b:robstack = b:robstack . a:schar
else
let b:robstack = a:schar
endif
endfunction
function! BC_GetChar()
let l:char = b:robstack[strlen(b:robstack)-1]
let b:robstack = strpart(b:robstack, 0, strlen(b:robstack)-1)
return l:char
endfunction
'''Outra opção para fechamento de parênteses'''
" Fechamento automático de parênteses
imap { {}<left>
imap ( ()<left>
imap [ []<left>
" pular fora dos parênteses, colchetes e chaves, mover o cursor
" no modo de inserção
imap <c-l> <Esc><right>a
imap <c-h> <Esc><left>a
Função para barra de status
set statusline=%F%m%r%h%w
set statusline+=[FORMAT=%{&ff}]
set statusline+=[TYPE=%Y]
set statusline+=[ASCII=\%03.3b][HEX=\%02.2B]
set statusline+=[POS=%04l,%04v][%p%%][LEN=%L]
set laststatus=2
Rolar outra janela
Se você dividir janelas tipo
Ctrl-w n
.vimrc
" rola janela alternativa
fun! ScrollOtherWindow(dir)
if a:dir == "down"
let move = "\<C-E>"
elseif a:dir == "up"
let move = "\<C-Y>"
endif
exec "normal \<C-W>p" . move . "\<C-W>p"
endfun
nmap <silent> <M-Down> :call ScrollOtherWindow("down")<CR>
nmap <silent> <M-Up> :call ScrollOtherWindow("up")<CR>
Função para numerar linhas
No site wikia há um código de função para numerar linhas
Função para trocar o esquema de cores
function! <SID>SwitchColorSchemes()
if !exists("g:colors_name")
let g:colors_name = 'default'
endif
if g:colors_name == 'default'
colorscheme delek
elseif g:colors_name == 'delek'
colorscheme desert
elseif g:colors_name == 'desert'
colorscheme elflord
elseif g:colors_name == 'elflord'
colorscheme evening
elseif g:colors_name == 'evening'
colorscheme industry
elseif g:colors_name == 'industry'
colorscheme koehler
elseif g:colors_name == 'koehler'
colorscheme morning
elseif g:colors_name == 'morning'
colorscheme default
endif
endfunction
map <silent> <F6> :call <SID>SwitchColorSchemes()<CR>
Uma função para inserir cabeçalho de script
para chamar a função basta pressionar ,sh
em modo normal
" Cria um cabeçalho para scripts bash
fun! InsertHeadBash()
normal(1G)
:set ft=bash
:set ts=4
call append(0, "#!/bin/bash")
call append(1, "# Criado em: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(2, "# Ultima modificação: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "# NOME DA SUA EMPRESA ")
call append(4, "# Propósito do script ")
normal($)
endfun
map ,sh :call InsertHeadBash()<cr>
Função para inserir cabeçalhos Python
" função para inserir cabeçalhos Python
fun! BufNewFile_PY()
normal(1G)
:set ft=python
:set ts=4
call append(0, "#!/usr/bin/python")
call append(1, "# -*- coding: utf-8 -*-")
call append(2, "# Criado: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(3, "# Modificado: " . strftime("%a %d/%b/%Y hs %H:%M"))
call append(4, "# Instituicao: <+nome+>")
call append(5, "# Proposito do script: <+descreva+>")
call append(6, "# Autor: <+seuNome+>")
call append(7, "# site: <+seuSite+>")
normal gg
endfun
autocmd BufNewFile *.py call BufNewFile_PY()
map ,py :call BufNewFile_PY()<cr>
" Ao editar um arquivo será aberto no último ponto em
" que foi editado
augroup vimrc-remember-cursor-position
autocmd!
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
augroup END
" Permite recarregar o Vim para que modificações no
" Próprio vimrc seja ativadas com o mesmo sendo editado
nmap <F12> :<C-u>source $HOME/.vimrc <BAR> echo "Vimrc recarregado!"<CR>
" Redimensionar a janela com
" Alt-seta à direita e esquerda
map <M-right> <Esc>:resize +2 <CR>
map <M-left> <Esc>:resize -2 <CR>
Função para pular para uma linha
"ir para linha
" ir para uma linha específica
function! GoToLine()
let ln = inputdialog("ir para a linha...")
exe ":" . ln
endfunction
"no meu caso o mapeamento é com Ctrl-l
"use o que melhor lhe convier
nmap <C-l> :call GoToLine()<CR>
Função para gerar backup
A função abaixo é útil para ser usada quando você vai editar um arquivo gerando modificações significativas, assim você poderá restaurar o backup se necessário
" A mapping to make a backup of the current file.
fun! WriteBackup()
let fname = expand("%:p") . "__" . strftime("%d-%m-%Y--%H.%M.%S")
silent exe ":w " . fname
echo "Wrote " . fname
endfun
nnoremap <Leader>ba :call WriteBackup()<CR>
<leader>
” em geral é a barra invertida
\
, na dúvida “:help <leader>
”.