• Publicidad

Configuración de vim para programar en Perl

¿Tienes algo interesante que decir? ¿O quizá algo no tan interesante? Aquí tenemos un espacio para compartir todo lo que queramos decir y que no cabe en ninguno de los otros foros.

Configuración de vim para programar en Perl

Notapor explorer » 2011-10-20 10:45 @489

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:
Sintáxis: [ Descargar ] [ Ocultar ]
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
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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using vim Syntax Highlighting
  1. " vim: set ft=vim :
  2.  
  3. "=====[ Activar continuaciones de línea en este archivo ]==============
  4. version 6.0      
  5. if &compatible | set nocompatible | endif
  6. let s:cpo_save = &cpoptions
  7. set cpoptions&vim      
  8.  
  9.  
  10. " filetypes
  11. filetype on
  12. filetype plugin on
  13. filetype indent on
  14.  
  15. "=====[ Activar sintaxis ]===========
  16. syntax on
  17.  
  18. "=====[ Evitar el plegado de código mientras se está en modo Insertar ]======
  19. " Don't screw up folds when inserting text that might affect them, until
  20. " leaving insert mode. Foldmethod is local to the window. Protect against
  21. " screwing up folding when switching between windows.
  22. autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
  23. autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
  24.  
  25. "=====[ Personalización ]===============================
  26. set   autoread                                  " Actualizar automáticamente si cambia el archivo en disco
  27. set   background=dark                           " Fondo de pantalla: dark o light
  28. set   backspace=indent,eol,start                " Permitir backspace sobre esto en modo inserción
  29. set   backup                                    " Archivos backup~
  30. set   backupdir=$HOME/.backup/,.                " Directorio donde hacer los backup
  31. set nocindent                                   " Sangrado tipo C
  32. set   colorcolumn=120                           " Marcar columnas
  33. set   confirm                                   " Confirmar salidas peligrosas
  34. set nocompatible                                " Modo
  35. set   complete=.,w,b,u,t,i,kspell,k             " Modo de autocompletado
  36. set   copyindent                                " Copia la estructura del sangrado al sangrar
  37. set   cursorcolumn                              " Mostrar la columna actual
  38. set   cursorline                                " Mostrar la fila actual
  39. set   dictionary=/usr/share/dict/words          " Autocompletado
  40. set   endofline                                 " La última línea debe tener un fin de línea (para que funcione, binary debe estar on)
  41. set   errorbells                                " Toca la campana cuando error
  42. set   esckeys                                   " Asigna secuencias de escape inexistentes (activa las teclas del keypad)
  43. set   fileencodings=ucs-bom,utf-8,default,latin1        " Codificaciones de los archivos a probar a leer
  44. set   fileformat=unix                           " Modo de fichero es unix
  45. set   fileformats=unix,dos                      " Detecta formatos de fin de líneas en el archivo
  46. set   foldenable                                " Activar plegado inicial. off=desplegado
  47. set   foldclose=all                             " El plegado de bloques debe hacerse cuando salimos del bloque
  48. set   foldcolumn=2                              " Ancho de la columna especial de plegado
  49. set   foldignore=#                              " Carácter a ignorar en el plegado. Solo si foldmethod es "indent"
  50. set   foldlevel=1                               " Nivel de plegado por defecto. 0=todo plegado
  51. set   foldmethod=indent                         " Estrategia para el plegado
  52. set   foldminlines=5                            " Mínimo líneas para plegar
  53. set nofsync                                     " Hacer sync al grabar el archivo
  54. set   helplang=es                               " Mensajes de ayuda
  55. "set   hidden                                   " Recuerda el contenido del undo después de salir
  56. set   history=500                               " Número de líneas que se almacenan en el histórico de comandos
  57. set   hlsearch                                  " Ilumina los patrones encontrados
  58. set   ignorecase                                " Búsqueda insensible a las mayúsculas/minúsculas
  59. set   incsearch                                 " Búsqueda incremental
  60. set noinsertmode                                " Empezar en modo insert
  61. set   isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=,:   " Caracteres permitidos en los nombres de los ficheros
  62. set   keymodel=startsel                         " Teclas especiales en modo selección
  63. set   laststatus=2                              " 0: no línea de estado. 1: solo si hay más de un fichero. 2: siempre
  64. set   listchars=tab:▸\ ,trail:·,nbsp:~,eol:¬    " Caracteres invisibles al ser visibles
  65. "set   magic                                    " Cambia la forma en que los backslashes son usados en los patrones de búsqueda
  66. set   matchpairs+=<:>                           " Agrega los ángulos como caracteres emparejados
  67. set   modeline                                  " Muestra la línea indicador de modo
  68. set   mouse=a                                   " Usa el ratón (a=todos, n=normal, v=visual, i=insert, c=comando, h=ayuda)
  69. set   number                                    " Muestra números de línea
  70. set   numberwidth=3                             " Ancho para las columnas de números de líneas
  71. set   printoptions=paper:a4                     " Tamaño del papel en la impresora
  72. set   ruler                                     " Muestra la posición del cursor en la barra de estado
  73. "set   runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/current,/var/lib/vim/addons/after,~/.vim/after
  74. set   scrolloff=3                               " Líneas por arriba/abajo cuando se desplace
  75. set   selectmode=mouse                          " Cómo entrar en modo selección
  76. set   showcmd                                   " Muestra el comando en la barra de estado
  77. set   showmatch                                 " Muestra el carácter emparejado (saltando brevemente)
  78. set   showmode                                  " Muestra el modo en la barra de estado (insert/replace/...)
  79. set   smartcase                                 " Sensible al tamaño de caja si se usan mayúsculas en las búsquedas
  80. set   spell                                     " Comprobación ortográfica
  81. set   spellfile=~/.vim/spell/es.utf-8.add       " Archivo con palabras añadidas con comandos zg y zw
  82. set   spelllang=~/.vim/spell/es.utf-8.spl,en    " Idiomas
  83. 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
  84. "set noswapfile
  85. "set   tabline=                                 " Contenido de la fila de pestañas
  86. set   termencoding=utf-8                        " Codificación usada por la terminal
  87. set   textwidth=0                               " Ancho máximo del texto. 0: desactivado
  88. set   title                                     " Muestra el nombre del fichero en la barra del título
  89. "set   verbose=3                                " Verbosidad, de 0 a 15
  90. set   viminfo='20,\"500                         " Recuerda registros de copia después de salir, en el fichero .viminfo -- 20 ficheros, 500 líneas
  91. set   wildignore+=*CVS                          " Archivos a ignorar
  92. set   wildmenu                                  " Completado con menú
  93. set   window=39                                 " Altura de la ventana de desplazamiento
  94. set nowrap                                      " No partir las líneas
  95.  
  96.  
  97. "=====[ Definición de lo que son palabras clave ]===============================
  98. set iskeyword+=$
  99. set iskeyword+=%
  100. set iskeyword+=@
  101. set iskeyword-=,
  102.  
  103. "=====[ Construcción del archivo spell ]=========================
  104. "ejecutar el comando
  105. ":mkspell es /usr/share/myspell/es_ES
  106. "y se genera el archivo es.utf-8.spl que hay que dejar en ~/.vim/spell/
  107.  
  108. "=====[ Tab handling ]===========================================
  109. set noautoindent                                " Activar el sangrado automático
  110. set noexpandtab                                 " No convertir los caracteres tabulador a espacios
  111. set tabstop=8                                   " Número de espacios que aparenta un carácter tabulador
  112. set softtabstop=8                               " Número de espacios cuando se inserta un tabulador
  113. set shiftwidth=4                                " Número de espacios a usar en el sangrado
  114. set shiftround                                  " Siempre sangrar al punto más cercano de parada del tabulado
  115. set smarttab                                    " Usa shiftwidths a la izquierda, tabstops en el resto
  116. set smartindent                                 " Activa el sangrado inteligente
  117.  
  118. "=====[ Highlight cursor column on request ]=====================
  119. "highlight CursorColumn term=bold ctermfg=black ctermbg=DarkGrey cterm=bold
  120. "highlight CursorLine  term=bold ctermfg=white ctermbg=DarkGrey cterm=bold
  121.  
  122. "map <silent> ;c :set cursorcolumn!<CR>
  123. "map <silent> ;r :set cursorline!<CR>
  124.  
  125. " Inverse highlighting for cursor...
  126. highlight CursorInverse   term=inverse ctermfg=black ctermbg=white
  127. call matchadd('CursorInverse', '\%#', 100)
  128.  
  129. " Need an invisible cursor column to make it update on every cursor move...
  130. highlight clear CursorColumn
  131. highlight CursorColumn term=none cterm=none
  132. set cursorcolumn
  133.  
  134. " Toggle cursor row highlighting on request...
  135. highlight CursorLine term=bold ctermfg=black ctermbg=cyan cterm=bold
  136. map <silent> ;r :set cursorline!<CR>
  137.  
  138. " Toggle cursor column highlighting on request...
  139. map <silent> ;c :silent call Toggle_CursorColumn('flip')<CR>
  140.  
  141. " Implement cursor toggle...
  142. let g:cursorcolumn_visible = 0
  143. function! Toggle_CursorColumn (requested_state)
  144.     if a:requested_state == 'off' || g:cursorcolumn_visible && a:requested_state == 'flip'
  145.         let g:cursorcolumn_visible = 0
  146.         highlight clear CursorColumn
  147.         highlight CursorColumn term=none cterm=none
  148.     else
  149.         let g:cursorcolumn_visible = 1
  150.         highlight CursorColumn term=bold ctermfg=black ctermbg=cyan cterm=bold
  151.     endif
  152. endfunction
  153.  
  154. "=====[ Corrección ortográfica ]=================================
  155. map <silent> ;s :setlocal invspell<CR>
  156.  
  157. "=====[ Sangrado y formateo inmediato ]==========================
  158. nnoremap > >i{
  159. nnoremap < <i{
  160. nnoremap = =i{
  161.  
  162. "=====[ Plegado de código Perl ]=================================
  163. let perl_fold=1                                 " Activar plegado sintaxis Perl
  164. let perl_extended_vars = 1
  165. let perl_fold_blocks = 1
  166.  
  167. "=====[ Comments are important ]==================
  168. "highlight Comment term=bold ctermfg=white
  169.  
  170. "=====[ Add or subtract comments ]===============================
  171. function! ToggleComment ()
  172.     let currline = getline(".")
  173.     if currline =~ '^#'
  174.         s/^#//
  175.     else "if currline =~ '\S'
  176.        s/^/#/
  177.    endif
  178. endfunction
  179.  
  180. function! ToggleBlock () range
  181.    let currline = getline(a:firstline)
  182.    if currline =~ '^#'
  183.        execute ":" . a:firstline . "," . a:lastline . "s/^#//"
  184.    else "if currline =~ '\S'
  185.         execute ":" . a:firstline . "," . a:lastline . "s/^/#/"
  186.     endif
  187. endfunction
  188.  
  189.  map <silent> # :call ToggleComment()<CR>j0
  190. vmap <silent> # :call ToggleBlock()<CR>
  191.  
  192.  
  193. "====[ Varios ]=================================================
  194. " Make the completion popup look menu-ish on a Mac...
  195. highlight Pmenu ctermbg=white ctermfg=black
  196. highlight PmenuSel ctermbg=blue ctermfg=white cterm=bold
  197. highlight PmenuSbar ctermbg=grey ctermfg=grey
  198. highlight PmenuThumb ctermbg=blue ctermfg=blue
  199.  
  200. " Execute Perl file...
  201. "map W :!clear;perl %;echo<CR>
  202.  
  203. " Debug Perl file...
  204. "map Q :!perl -d %<CR>
  205.  
  206. " Format file with perltidy...
  207. map ;t 1G!Gperltidy<CR>
  208.  
  209. if has("statusline")
  210.      set statusline=%<%f\ %h%m%r%=%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}%k\ %-14.(%l,%c%V%)\ %P
  211. endif
  212.  
  213. "====[ Goto last location in non-empty files ]=======
  214. autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$")
  215.                    \| exe "normal! g`\""
  216.                    \| endif
  217.  
  218. "=====[ Recuperar el estado de la continuación de línea ]========
  219. let &cpoptions = s:cpo_save
  220. unlet s:cpo_save
  221.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

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

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.
Última edición por explorer el 2013-03-26 17:13 @759, editado 8 veces en total
Razón: Cambios en la configuración. Reajustado valor de tabulado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Configuración de vim para programar en Perl

Notapor Thomson_ » 2011-10-31 23:31 @021

Pero esta configuración se hace con un nuevo archivo, ¿o cómo?
Es que solo me aparecen dos archivos:
/etc/vim# ls
vimrc vimrc.tiny


:?:
Thomson_
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-10-31 22:50 @993

Re: Configuración de vim para programar en Perl

Notapor explorer » 2011-11-01 08:18 @387

Depende de cada sistema.

Por ejemplo, en el mío, al final de /etc/vimrc, están estas líneas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using vim Syntax Highlighting
" Source a global configuration file if available
if filereadable("/etc/vimrc.local")
  source /etc/vimrc.local
endif
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Configuración de vim para programar en Perl

Notapor Thomson_ » 2011-11-01 12:24 @558

El archivo vimrc tiene las líneas que tu indicas.
Funciona y queda excelente.

¡Gracias!
Thomson_
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2011-10-31 22:50 @993


Volver a Pasando el rato

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados