Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » En Comunidad » Pasando el Rato » Configuración de vim para programar en Perl Responder al tema
Nuevo tema


Página 1 de 1  [ 4 mensajes ] 
 
Nota 2011-10-20 10:45 @489
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Configuración de vim para programar en Perl
Esta es la configuración que yo uso para editar código Perl en Vim.

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:
Syntax: [ Download ] [ Hide ]
Using vim Syntax Highlighting
  1. " Activar el resaltado de sintaxis
  2. syntax on
  3. " Saltar a la última línea que se estaba editando
  4. if has("autocmd")
  5.     au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
  6. endif
  7. " Activar reglas de indentación
  8. if has("autocmd")
  9.     filetype plugin indent on
  10. endif
  11. " Interpretar lo que dice vimrc.local
  12. if filereadable("/etc/vim/vimrc.local")
  13.     source /etc/vim/vimrc.local
  14. endif

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:
Syntax: [ Download ] [ Hide ]
Using vim Syntax Highlighting
  1. version 6.0      
  2. if &cp | set nocp | endif
  3. let s:cpo_save=&cpo
  4. set cpo&vim      
  5. nmap gx <Plug>NetrwBrowseX
  6. nnoremap <silent> <Plug>NetrwBrowseX :call netrw#NetrwBrowseX(expand("^V<cWORD>"),0)^V^M
  7. let &cpo=s:cpo_save
  8. unlet s:cpo_save
  9.  
  10. " vim: set ft=vim :
  11.  
  12. "=====[ Personalización ]===============================
  13.  
  14. " set verbose=3
  15. " set autoindent                                " Activar la indentación automática
  16. set background=dark                             " Fondo de pantalla en negro
  17. set backspace=indent,eol,start                  " Permitir backspace sobre esto en modo inserción
  18. set backup                                      " Archivos Backup~
  19. set backupdir=$HOME/.backup/,.                  " Directorio donde hacer los backup
  20. set colorcolumn=120                             " Marcar columna margen derecho
  21. set copyindent                                  " Copia la estructura de indentación al autoindentar
  22. set endofline                                   " La última línea debe tener un fin de línea
  23. set errorbells                                  " Toca la campana cuando error
  24. set esckeys                                     " Asigna secuencias de escape inexistentes (activa las teclas del keypad)
  25. set fileencodings=ucs-bom,utf-8,default,latin1  " Codificaciones de los ficheros
  26. set fileformat=unix                             " Modo de fichero es unix
  27. " set fileformats=unix,dos                      " Detecta formatos de fin de líneas en el fichero
  28. set helplang=es                                 " Mensajes de ayuda
  29. set hidden                                      " Recuerda el contenido del undo después de salir
  30. set history=50                                  " Número de líneas que se almacenan en el histórico de comandos
  31. set hlsearch                                    " Ilumina los patrones encontrados
  32. set ignorecase                                  " Búsqueda insensible a las mayúsculas/minúsculas
  33. set isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=,:     " Caracteres permitidos en los nombres de los ficheros
  34. set listchars=tab:▸\ ,eol:¬                     " Caracteres invisibles al ser visibles
  35. set laststatus=2                                " 0: no línea de estado. 1: solo si hay más de un fichero. 2: siempre
  36. " set magic                                     " Cambia la forma en que los backslashes son usados en los patrones de búsqueda
  37. set matchpairs+=<:>                             " Agrega los ángulos como caracteres emparejados
  38. set modeline                                    " Muestra la línea indicador de modo
  39. set mouse=a                                     " Usa el ratón (a=todos, n=normal, v=visual, i=insert, c=comando, h=ayuda)
  40. set number                                      " Muestra números de línea
  41. set printoptions=paper:a4                       " Tamaño del papel en la impresora
  42. set ruler                                       " Muestra la posición del cursor en la barra de estado
  43. " set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/current,/var/lib/vim/addons/after,~/.vim/after
  44. set scrolloff=3                                 " Líneas por arriba/abajo cuando se desplace
  45. set showcmd                                     " Muestra el comando en la barra de estado  
  46. set showmatch                                   " Muestra el carácter emparejado (saltando brevemente)
  47. set showmode                                    " Muestra el modo en la barra de estado (insert/replace/...)
  48. set smartcase                                   " Sensible al tamño de caja si se usan mayúsculas en las búsquedas
  49.                                                " Ficheros menos interesantes en las búsquedas
  50. set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
  51. set termencoding=utf-8                          " Codificación usada por la terminal
  52. set textwidth=0                                 " Ancho máximo del texto. 0: desactivado
  53. set title                                       " Muestra el nombre del fichero en la barra del título
  54. set viminfo='20,\"500                           " Recuerda registros de copia después de salir, en el fichero .viminfo -- 20 ficheros, 500 líneas
  55. set window=39                                   " Altura de la ventana de desplazamiento
  56. set wildmenu                                    " Completado con menú
  57. set nowrap                                      " No partir las líneas
  58.  
  59. "=====[ Definición de lo que son palabras clave ]===============================
  60.  
  61. set iskeyword+=$
  62. set iskeyword+=%
  63. set iskeyword+=@
  64. set iskeyword-=,
  65.  
  66. "=====[ Add or subtract comments ]===============================
  67.  
  68. function! ToggleComment ()
  69.     let currline = getline(".")
  70.     if currline =~ '^#'
  71.         s/^#//
  72.     else "if currline =~ '\S'
  73.        s/^/#/
  74.    endif
  75. endfunction
  76.  
  77. function! ToggleBlock () range
  78.    let currline = getline(a:firstline)
  79.    if currline =~ '^#'
  80.        execute ":" . a:firstline . "," . a:lastline . "s/^#//"
  81.    else "if currline =~ '\S'
  82.         execute ":" . a:firstline . "," . a:lastline . "s/^/#/"
  83.     endif
  84. endfunction
  85.  
  86.  map <silent> # :call ToggleComment()<CR>j0
  87. vmap <silent> # :call ToggleBlock()<CR>
  88.  
  89. "=====[ Programming support ]===================================
  90.  
  91. " Insert shebang lines...
  92. " iab hbc #! /bin/csh
  93. " iab hbs #! /bin/sh
  94. iab plperl #! /usr/bin/perl<CR>
  95. \use common::sense; <TAB><TAB># Hay que tener sentido común<CR><CR>
  96. \use Modern::Perl; <TAB><TAB># Somos modernos<CR>
  97. \use utf8; <TAB><TAB><TAB># este programa está escrito en utf8<CR><CR>
  98. \use autodie; <TAB><TAB><TAB># es mejor morir que regresar con deshonor (proverbio Klingon)<CR>
  99. \use open qw(:utf8 :std); <TAB># la salida y la entrada estándar serán en utf8<CR><CR>
  100. \use File::Slurp;<CR><BS><CR><CR><CR>__END__<CR>
  101. " iab hbp #! /opt/local/bin/perl5.10.0<CR>use 5.010;<CR>use warnings;
  102. " iab hbr #! /Users/damian/bin/rakudo<CR>use v6;
  103.  
  104. " Insert common Perl code structures...
  105. iab udd use Data::Dumper::Simple;<CR>warn Dumper [];<ESC>hi
  106. iab ubm use Benchmark qw( cmpthese );<CR><CR>cmpthese -10, {<CR>};<ESC>O
  107. iab usc use Smart::Comments;<CR>###
  108. iab uts use Test::Simple 'no_plan';
  109. iab utm use Test::More 'no_plan';
  110. iab dbs $DB::single = 1;<ESC>
  111.  
  112. " Add new highlight combinations...
  113. highlight YELLOW_ON_BLACK ctermfg=yellow ctermbg=black
  114. highlight WHITE_ON_RED ctermfg=white ctermbg=red
  115.  
  116. " Track "faux" references...
  117. function! BadRefs ()
  118.     match WHITE_ON_RED /_ref[ ]*[[{(]\|_ref[ ]*-[^>]/
  119. endfunction
  120. call BadRefs()
  121.  
  122.  
  123. "=====[ Highlight cursor column on request ]===================
  124.  
  125. highlight CursorColumn term=bold ctermfg=black ctermbg=DarkGrey cterm=bold
  126. highlight CursorLine term=bold ctermfg=white ctermbg=DarkGrey cterm=bold
  127.  
  128. map <silent> ;c :set cursorcolumn!<CR>
  129. map <silent> ;r :set cursorline!<CR>
  130.  
  131. set cursorcolumn
  132. set cursorline
  133.  
  134. "=====[ Tab handling ]======================================
  135.  
  136. set tabstop=8       " Número de espacios que aparenta un carácter tabulador
  137. set softtabstop=8   " Número de espacios cuando se inserta un tabulador
  138. set noexpandtab     " No convertir los caracteres tabulador a espacios
  139. set shiftwidth=4    " Número de espacios a usar en la indentación
  140. set shiftround      " Siempre indentar al más cercano punto de parada del tabulado
  141. set smarttab        " Usa shiftwidths a la izquierda, tabstops en el resto
  142. set smartindent     " Activa el indentado inteligente
  143.  
  144. " Make the completion popup look menu-ish on a Mac...
  145. highlight Pmenu ctermbg=white ctermfg=black
  146. highlight PmenuSel ctermbg=blue ctermfg=white cterm=bold
  147. highlight PmenuSbar ctermbg=grey ctermfg=grey
  148. highlight PmenuThumb ctermbg=blue ctermfg=blue
  149.  
  150. " Execute Perl file...
  151. map W :!clear;perl %;echo<CR>
  152.  
  153. " Debug Perl file...
  154. map Q :!perl -d %<CR>
  155.  
  156. " Format file with perltidy...
  157. map ;t 1G!Gperltidy<CR>
  158.  
  159. " Activar el modo de completado omnifunc
  160. if has("autocmd") && exists("+omnifunc")            
  161.     autocmd Filetype *                              
  162.         \   if &omnifunc == "" |            
  163.         \           setlocal omnifunc=syntaxcomplete#Complete |
  164.         \   endif                          
  165. endif
  166.  

Mucho de este código está tomado del vimrc de Damian Conway

Algunas líneas requieren explicación:
  • 14 a 57: configuraciones generales. Algunas se desvían un poco de lo recomendado por Damian en su libro Perl Best Practices, pero para mí, son suficientes tal y como están.
  • 61 a 64: indicamos a Vim qué consideramos que es un identificador.
  • 66 a 87: comentar y descomentar un bloque de líneas, de forma rápida y sencilla.
  • 89 a 110: macros, para meter código que repetimos con frecuencia.
  • 117: si seguimos la nomenclatura de Damian, todas las variables escalares que almacenan referencias, debemos llamarlas con un nombre que termina en '_ref'. Esta función nos coloreará aquellas zonas del programa en las que no estamos manejando bien esas variables.
  • 123 a 132: le ponemos color a la fila y columna en donde estamos trabajando.
  • 134 a 142: una parte importantísima: la gestión de los tabuladores, espacios e indentación automática del código.
  • 144 a 148: colores para los menús desplegables, en el autocompletado de código.
  • 150 a 157: macros especiales: ejecutar el código, depurar el código, formatear (con perltidy) el código.
  • 159 a 165: activar modo de completado 'omnifunc' (una de las macros de Vim).

Ejemplo de uso:
Imagen
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.

_________________
JF^D Perl programming


Última edición por explorer el 2012-03-26 10:36 @483, editado 5 veces en total
Cambios en la configuración. Reajustado valor de tabulado.


Nota 2011-10-31 23:31 @021

Perlero Nuevo
Registrado: 2011-10-31 22:50 @993
Mensajes: 6
Re: Configuración de vim para programar en Perl
Pero esta configuración se hace con un nuevo archivo, ¿o cómo?
Es que solo me aparecen dos archivos:
Citar:
/etc/vim# ls
vimrc vimrc.tiny


:?:


Nota 2011-11-01 08:18 @387
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Configuración de vim para programar en Perl
Depende de cada sistema.

Por ejemplo, en el mío, al final de /etc/vimrc, están estas líneas:
Syntax: [ Download ] [ Hide ]
Using vim Syntax Highlighting
" Source a global configuration file if available
if filereadable("/etc/vimrc.local")
  source /etc/vimrc.local
endif

Es decir: vim usará el fichero /etc/vimrc global, para inicializarse, pero además, mira a ver si el usuario ha creado un fichero /etc/vimrc.local, con más personalizaciones, y si está, lo carga e interpreta.

Mira a ver si tú tienes las mismas líneas. O las pones y luego metes mi configuración en vimrc.local. O también puedes editar el vimrc global y añadir mi configuración al final (bueno... quizás no sea recomendable... pero, por probar, no se pierde nada).

_________________
JF^D Perl programming


Nota 2011-11-01 12:24 @558

Perlero Nuevo
Registrado: 2011-10-31 22:50 @993
Mensajes: 6
Re: Configuración de vim para programar en Perl
El archivo vimrc tiene las líneas que tu indicas.
Funciona y queda excelente.

¡Gracias!


Responder al tema  [ 4 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO