ide para perl
¿Cuáles son sus sugerencias para una configuración de Vim ideal para el desarrollo de Perl? (12)
.vimrc:
" Allow :make to run ''perl -c'' on the current buffer, jumping to
" errors as appropriate
" My copy of vimparse: http://irc.peeron.com/~zigdon/misc/vimparse.pl
set makeprg=$HOME/bin/vimparse.pl/ -c/ %/ $*
" point at wherever you keep the output of pltags.pl, allowing use of ^-]
" to jump to function definitions.
set tags+=/path/to/tags
Hay muchos hilos relacionados con la forma de configurar Vim/GVim para el desarrollo de Perl en PerlMonks.org . Mi propósito al publicar esta pregunta es intentar crear, en la medida de lo posible, una configuración ideal para el desarrollo de Perl usando Vim / GVim. Por favor, publique sus sugerencias para la configuración de .vimrc
, así como los complementos útiles.
Intentaré fusionar las recomendaciones en un conjunto de configuraciones de .vimrc
y en una lista de complementos recomendados, ftplugins y archivos de sintaxis.
.vimrc ajustes
"Create a command :Tidy to invoke perltidy"
"By default it operates on the whole file, but you can give it a"
"range or visual range as well if you know what you''re doing."
command -range=% -nargs=* Tidy <line1>,<line2>!
/perltidy -your -preferred -default -options <args>
vmap <tab> >gv "make tab in v mode indent code"
vmap <s-tab> <gv
nmap <tab> I<tab><esc> "make tab in normal mode indent code"
nmap <s-tab> ^i<bs><esc>
let perl_include_pod = 1 "include pod.vim syntax file with perl.vim"
let perl_extended_vars = 1 "highlight complex expressions such as @{[$x, $y]}"
let perl_sync_dist = 250 "use more context for highlighting"
set nocompatible "Use Vim defaults"
set backspace=2 "Allow backspacing over everything in insert mode"
set autoindent "Always set auto-indenting on"
set expandtab "Insert spaces instead of tabs in insert mode. Use spaces for indents"
set tabstop=4 "Number of spaces that a <Tab> in the file counts for"
set shiftwidth=4 "Number of spaces to use for each step of (auto)indent"
set showmatch "When a bracket is inserted, briefly jump to the matching one"
sintaxis
complementos
delimitMate proporciona autocompletado para comillas, parens, corchetes, etc. en modo insertar . Maneja apóstrofes más inteligentemente que closepairs.vim .
ftplugins
Módulos de CPAN
Herramientas de depuración
Acabo de VimDebug de VimDebug . Todavía no he podido instalarlo en Windows, pero parece prometedor a partir de la descripción.
Andy Lester y otros maintain los archivos oficiales de soporte de Perl, Perl 6 y Pod para Vim en Github: https://github.com/vim-perl/vim-perl
Aquí hay un módulo interesante que encontré el fin de semana: App::EditorTools::Vim
. Su característica más interesante parece ser su capacidad para cambiar el nombre de las variables léxicas. Lamentablemente, mis pruebas revelaron que aún no parece estar listo para el uso de producción, pero seguro que vale la pena vigilarlo.
Aquí hay un par de mis configuraciones de .vimrc. Puede que no sean específicos de Perl, pero no podría trabajar sin ellos:
set nocompatible " Use Vim defaults (much better!) "
set bs=2 " Allow backspacing over everything in insert mode "
set ai " Always set auto-indenting on "
set showmatch " show matching brackets "
" for quick scripts, just open a new buffer and type ''_perls'' "
iab _perls #!/usr/bin/perl<CR><BS><CR>use strict;<CR>use warnings;<CR>
De lejos, los más útiles son
- Plugin de tipo de archivo Perl (ftplugin): este color codifica varios elementos de código
- La creación de un comando check-sintax-before-saving "W" le impide guardar código incorrecto (puede anular con la ''w'' normal).
Instalar los complementos es un poco complicado ya que la versión de vim (y linux) coloca los complementos en diferentes lugares. Los míos están en ~ / .vim / after /
mi .vimrc a continuación.
set vb
set ts=2
set sw=2
set enc=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf8,prc
set guifont=Monaco:h11
set guifontwide=NSimsun:h12
set pastetoggle=<F3>
command -range=% -nargs=* Tidy <line1>,<line2>!
/perltidy
filetype plugin on
augroup JumpCursorOnEdit
au!
autocmd BufReadPost *
/ if expand("<afile>:p:h") !=? $TEMP |
/ if line("''/"") > 1 && line("''/"") <= line("$") |
/ let JumpCursorOnEdit_foo = line("''/"") |
/ let b:doopenfold = 1 |
/ if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
/ let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
/ let b:doopenfold = 2 |
/ endif |
/ exe JumpCursorOnEdit_foo |
/ endif |
/ endif
" Need to postpone using "zv" until after reading the modelines.
autocmd BufWinEnter *
/ if exists("b:doopenfold") |
/ exe "normal zv" |
/ if(b:doopenfold > 1) |
/ exe "+".1 |
/ endif |
/ unlet b:doopenfold |
/ endif
augroup END
Desde el blog de chromatic (ligeramente adaptado para poder usar el mismo mapeo de todos los modos).
vmap ,pt :!perltidy<CR>
nmap ,pt :%! perltidy<CR>
pulse ,pt
en modo normal para limpiar todo el archivo, o en modo visual para limpiar la selección. También podría agregar:
imap ,pt <ESC>:%! perltidy<CR>
Pero no se recomienda usar comandos desde el modo de entrada.
Encuentro las siguientes abreviaturas útiles
iab perlb print "Content-type: text/html/n/n <p>zdebug + $_ + $'' + $` line ".__LINE__.__FILE__."/n";exit;
iab perlbb print "Content-type: text/html/n/n<p>zdebug <C-R>a line ".__LINE__.__FILE__."/n";exit;
iab perlbd do{print "Content-type: text/html/n/n<p>zdebug <C-R>a line ".__LINE__."/n";exit} if $_ =~ //w/w/i;
iab perld print "Content-type: text/html/n/n dumper";use Data::Dumper;$Data::Dumper::Pad="<br>";print Dumper <C-R>a ;exit;
iab perlf foreach $line ( keys %ENV )<CR> {<CR> }<LEFT><LEFT>
iab perle while (($k,$v) = each %ENV) { print "<br>$k = $v/n"; }
iab perli x = (i<4) ? 4 : i;
iab perlif if ($i==1)<CR>{<CR>}<CR>else<CR>{<CR>}
iab perlh $html=<<___HTML___;<CR>___HTML___<CR>
Puedes hacerlos perl solo con
au bufenter *.pl iab xbug print "<p>zdebug ::: $_ :: $'' :: $` line ".__LINE__."/n";exit;
Mire también en perl-support.vim (un IDE de Perl para Vim / gVim). Viene con sugerencias para personalizar Vim (.vimrc), gVim (.gvimrc), ctags, perltidy y Devel: SmallProf junto a muchas otras cosas.
Para ordenar, uso lo siguiente; bien /t
para ordenar todo el archivo, o selecciono unas líneas en shift+V
modo shift+V
y luego hago /t
nnoremap <silent> /t :%!perltidy -q<Enter>
vnoremap <silent> /t :!perltidy -q<Enter>
A veces también es útil para descubrir el código. Como las líneas anteriores, ya sea para todo el archivo o para una selección.
nnoremap <silent> /D :.!perl -MO=Deparse 2>/dev/null<CR>
vnoremap <silent> /D :!perl -MO=Deparse 2>/dev/null<CR>
Tengo 2.
El primero que sé, recogí parte de él de otra persona, pero no recuerdo quién. Lo siento persona desconocida. Así es como hice el trabajo completo automático "C ^ N" con Perl. Aquí están mis comandos .vimrc.
" to use CTRL+N with modules for autocomplete "
set iskeyword+=:
set complete+=k~/.vim_extras/installed_modules.dat
Luego configuré un cron para crear el archivo installed_modules.dat. El mío es para mi sistema mandriva. Ajustar en consecuencia.
locate *.pm | grep "perl5" | sed -e "s///usr//lib//perl5////" | sed -e "s/5.8.8////" | sed -e "s/5.8.7////" | sed -e "s/vendor_perl////" | sed -e "s/site_perl////" | sed -e "s/x86_64-linux////" | sed -e "s////::/g" | sed -e "s//.pm//" >/home/jeremy/.vim_extras/installed_modules.dat
El segundo me permite usar gf en Perl. Gf es un atajo a otros archivos. simplemente coloque el cursor sobre el archivo y escriba gf y se abrirá ese archivo.
" To use gf with perl "
set path+=$PWD/**,
set path +=/usr/lib/perl5/*,
set path+=/CompanyCode/*, " directory containing work code "
autocmd BufRead *.p? set include=^use
autocmd BufRead *.pl set includeexpr=substitute(v:fname,''//(.*//)'',''//1.pm'',''i'')
Perl Best Practices tiene un apéndice sobre Configuraciones del Editor . vim es el primer editor en la lista.
" Create a command :Tidy to invoke perltidy.
" By default it operates on the whole file, but you can give it a
" range or visual range as well if you know what you''re doing.
command -range=% -nargs=* Tidy <line1>,<line2>!
/perltidy -your -preferred -default -options <args>