Como suelo programar tanto como un usuario normal, como siendo superusuario, la configuración está puesta de forma global, en el directorio /etc. Si se quiere que se use por parte de un solo usuario, pues vale con colocarlo en el directorio local.
Depende de la versión Linux/Unix que tengamos, pero lo normal es tener un fichero vimrc con opciones globales a toda el sistema, y vimrc.local, con opciones más personalizadas a cada usuario.
Algunas de las opciones globales que puede haber en vimrc, y que son interesantes activar para programar en Perl son:
Using vim Syntax Highlighting
- " Activar el resaltado de sintaxis
- syntax on
- " Saltar a la última línea que se estaba editando
- if has("autocmd")
- au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
- endif
- " Activar reglas de indentación
- if has("autocmd")
- filetype plugin indent on
- endif
- " Interpretar lo que dice vimrc.local
- if filereadable("/etc/vim/vimrc.local")
- source /etc/vim/vimrc.local
- endif
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Y este es el contenido de /etc/vim/vimrc.local, donde están las configuraciones propias para Perl. La mayor parte son configuraciones muy personales, así que es mejor desactivar, activar o cambiar aquellas opciones que más se acomoden a nuestra forma de trabajo:
Using vim Syntax Highlighting
- " vim: set ft=vim :
- "=====[ Activar continuaciones de línea en este archivo ]==============
- version 6.0
- if &compatible | set nocompatible | endif
- let s:cpo_save = &cpoptions
- set cpoptions&vim
- " filetypes
- filetype on
- filetype plugin on
- filetype indent on
- "=====[ Activar sintaxis ]===========
- syntax on
- "=====[ Evitar el plegado de código mientras se está en modo Insertar ]======
- " Don't screw up folds when inserting text that might affect them, until
- " leaving insert mode. Foldmethod is local to the window. Protect against
- " screwing up folding when switching between windows.
- autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
- autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
- "=====[ Personalización ]===============================
- set autoread " Actualizar automáticamente si cambia el archivo en disco
- set background=dark " Fondo de pantalla: dark o light
- set backspace=indent,eol,start " Permitir backspace sobre esto en modo inserción
- set backup " Archivos backup~
- set backupdir=$HOME/.backup/,. " Directorio donde hacer los backup
- set nocindent " Sangrado tipo C
- set colorcolumn=120 " Marcar columnas
- set confirm " Confirmar salidas peligrosas
- set nocompatible " Modo
- set complete=.,w,b,u,t,i,kspell,k " Modo de autocompletado
- set copyindent " Copia la estructura del sangrado al sangrar
- set cursorcolumn " Mostrar la columna actual
- set cursorline " Mostrar la fila actual
- set dictionary=/usr/share/dict/words " Autocompletado
- set endofline " La última línea debe tener un fin de línea (para que funcione, binary debe estar on)
- set errorbells " Toca la campana cuando error
- set esckeys " Asigna secuencias de escape inexistentes (activa las teclas del keypad)
- set fileencodings=ucs-bom,utf-8,default,latin1 " Codificaciones de los archivos a probar a leer
- set fileformat=unix " Modo de fichero es unix
- set fileformats=unix,dos " Detecta formatos de fin de líneas en el archivo
- set foldenable " Activar plegado inicial. off=desplegado
- set foldclose=all " El plegado de bloques debe hacerse cuando salimos del bloque
- set foldcolumn=2 " Ancho de la columna especial de plegado
- set foldignore=# " Carácter a ignorar en el plegado. Solo si foldmethod es "indent"
- set foldlevel=1 " Nivel de plegado por defecto. 0=todo plegado
- set foldmethod=indent " Estrategia para el plegado
- set foldminlines=5 " Mínimo líneas para plegar
- set nofsync " Hacer sync al grabar el archivo
- set helplang=es " Mensajes de ayuda
- "set hidden " Recuerda el contenido del undo después de salir
- set history=500 " Número de líneas que se almacenan en el histórico de comandos
- set hlsearch " Ilumina los patrones encontrados
- set ignorecase " Búsqueda insensible a las mayúsculas/minúsculas
- set incsearch " Búsqueda incremental
- set noinsertmode " Empezar en modo insert
- set isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=,: " Caracteres permitidos en los nombres de los ficheros
- set keymodel=startsel " Teclas especiales en modo selección
- set laststatus=2 " 0: no línea de estado. 1: solo si hay más de un fichero. 2: siempre
- set listchars=tab:▸\ ,trail:·,nbsp:~,eol:¬ " Caracteres invisibles al ser visibles
- "set magic " Cambia la forma en que los backslashes son usados en los patrones de búsqueda
- set matchpairs+=<:> " Agrega los ángulos como caracteres emparejados
- set modeline " Muestra la línea indicador de modo
- set mouse=a " Usa el ratón (a=todos, n=normal, v=visual, i=insert, c=comando, h=ayuda)
- set number " Muestra números de línea
- set numberwidth=3 " Ancho para las columnas de números de líneas
- set printoptions=paper:a4 " Tamaño del papel en la impresora
- set ruler " Muestra la posición del cursor en la barra de estado
- "set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/current,/var/lib/vim/addons/after,~/.vim/after
- set scrolloff=3 " Líneas por arriba/abajo cuando se desplace
- set selectmode=mouse " Cómo entrar en modo selección
- set showcmd " Muestra el comando en la barra de estado
- set showmatch " Muestra el carácter emparejado (saltando brevemente)
- set showmode " Muestra el modo en la barra de estado (insert/replace/...)
- set smartcase " Sensible al tamaño de caja si se usan mayúsculas en las búsquedas
- set spell " Comprobación ortográfica
- set spellfile=~/.vim/spell/es.utf-8.add " Archivo con palabras añadidas con comandos zg y zw
- set spelllang=~/.vim/spell/es.utf-8.spl,en " Idiomas
- set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc " Ficheros menos interesantes en las búsquedas
- "set noswapfile
- "set tabline= " Contenido de la fila de pestañas
- set termencoding=utf-8 " Codificación usada por la terminal
- set textwidth=0 " Ancho máximo del texto. 0: desactivado
- set title " Muestra el nombre del fichero en la barra del título
- "set verbose=3 " Verbosidad, de 0 a 15
- set viminfo='20,\"500 " Recuerda registros de copia después de salir, en el fichero .viminfo -- 20 ficheros, 500 líneas
- set wildignore+=*CVS " Archivos a ignorar
- set wildmenu " Completado con menú
- set window=39 " Altura de la ventana de desplazamiento
- set nowrap " No partir las líneas
- "=====[ Definición de lo que son palabras clave ]===============================
- set iskeyword+=$
- set iskeyword+=%
- set iskeyword+=@
- set iskeyword-=,
- "=====[ Construcción del archivo spell ]=========================
- "ejecutar el comando
- ":mkspell es /usr/share/myspell/es_ES
- "y se genera el archivo es.utf-8.spl que hay que dejar en ~/.vim/spell/
- "=====[ Tab handling ]===========================================
- set noautoindent " Activar el sangrado automático
- set noexpandtab " No convertir los caracteres tabulador a espacios
- set tabstop=8 " Número de espacios que aparenta un carácter tabulador
- set softtabstop=8 " Número de espacios cuando se inserta un tabulador
- set shiftwidth=4 " Número de espacios a usar en el sangrado
- set shiftround " Siempre sangrar al punto más cercano de parada del tabulado
- set smarttab " Usa shiftwidths a la izquierda, tabstops en el resto
- set smartindent " Activa el sangrado inteligente
- "=====[ Highlight cursor column on request ]=====================
- "highlight CursorColumn term=bold ctermfg=black ctermbg=DarkGrey cterm=bold
- "highlight CursorLine term=bold ctermfg=white ctermbg=DarkGrey cterm=bold
- "map <silent> ;c :set cursorcolumn!<CR>
- "map <silent> ;r :set cursorline!<CR>
- " Inverse highlighting for cursor...
- highlight CursorInverse term=inverse ctermfg=black ctermbg=white
- call matchadd('CursorInverse', '\%#', 100)
- " Need an invisible cursor column to make it update on every cursor move...
- highlight clear CursorColumn
- highlight CursorColumn term=none cterm=none
- set cursorcolumn
- " Toggle cursor row highlighting on request...
- highlight CursorLine term=bold ctermfg=black ctermbg=cyan cterm=bold
- map <silent> ;r :set cursorline!<CR>
- " Toggle cursor column highlighting on request...
- map <silent> ;c :silent call Toggle_CursorColumn('flip')<CR>
- " Implement cursor toggle...
- let g:cursorcolumn_visible = 0
- function! Toggle_CursorColumn (requested_state)
- if a:requested_state == 'off' || g:cursorcolumn_visible && a:requested_state == 'flip'
- let g:cursorcolumn_visible = 0
- highlight clear CursorColumn
- highlight CursorColumn term=none cterm=none
- else
- let g:cursorcolumn_visible = 1
- highlight CursorColumn term=bold ctermfg=black ctermbg=cyan cterm=bold
- endif
- endfunction
- "=====[ Corrección ortográfica ]=================================
- map <silent> ;s :setlocal invspell<CR>
- "=====[ Sangrado y formateo inmediato ]==========================
- nnoremap > >i{
- nnoremap < <i{
- nnoremap = =i{
- "=====[ Plegado de código Perl ]=================================
- let perl_fold=1 " Activar plegado sintaxis Perl
- let perl_extended_vars = 1
- let perl_fold_blocks = 1
- "=====[ Comments are important ]==================
- "highlight Comment term=bold ctermfg=white
- "=====[ Add or subtract comments ]===============================
- function! ToggleComment ()
- let currline = getline(".")
- if currline =~ '^#'
- s/^#//
- else "if currline =~ '\S'
- s/^/#/
- endif
- endfunction
- function! ToggleBlock () range
- let currline = getline(a:firstline)
- if currline =~ '^#'
- execute ":" . a:firstline . "," . a:lastline . "s/^#//"
- else "if currline =~ '\S'
- execute ":" . a:firstline . "," . a:lastline . "s/^/#/"
- endif
- endfunction
- map <silent> # :call ToggleComment()<CR>j0
- vmap <silent> # :call ToggleBlock()<CR>
- "====[ Varios ]=================================================
- " Make the completion popup look menu-ish on a Mac...
- highlight Pmenu ctermbg=white ctermfg=black
- highlight PmenuSel ctermbg=blue ctermfg=white cterm=bold
- highlight PmenuSbar ctermbg=grey ctermfg=grey
- highlight PmenuThumb ctermbg=blue ctermfg=blue
- " Execute Perl file...
- "map W :!clear;perl %;echo<CR>
- " Debug Perl file...
- "map Q :!perl -d %<CR>
- " Format file with perltidy...
- map ;t 1G!Gperltidy<CR>
- if has("statusline")
- set statusline=%<%f\ %h%m%r%=%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}%k\ %-14.(%l,%c%V%)\ %P
- endif
- "====[ Goto last location in non-empty files ]=======
- autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$")
- \| exe "normal! g`\""
- \| endif
- "=====[ Recuperar el estado de la continuación de línea ]========
- let &cpoptions = s:cpo_save
- unlet s:cpo_save
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
Mucho de este código está tomado del vimrc de Damian Conway
Ejemplo de uso:
Observen el colorido de la columna actual, la del margen derecho, la de la fila actual, el resultado de la llave de cierre correspondiente a la llave en donde está ahora nuestro cursor, el resultado de las cadenas que se estaban buscando, y el resaltado de sintaxis propio del lenguaje.
P.D. La opción colorcolumn está disponible a partir de Vim 2.73.