有许多线程与如何为Perl开发Vim/GVim配置on PerlMonks.org有关。我发布这个问题的目的是尽可能地使用Vim / GVim为Perl开发创建一个理想的配置。请发布您对.vimrc
设置以及有用插件的建议。
我将尝试将建议合并到一组.vimrc
设置以及推荐的插件,ftplugins和语法文件列表中。
"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"
delimitMate provides auto-completion for quotes, parens, brackets, etc. in insert mode。它比closepairs.vim更智能地处理撇号。
我刚刚发现了VimDebug。我还没有能够在Windows上安装它,但从描述中看起来很有希望。
答案 0 :(得分:4)
来自chromatic's blog(略微适应能够使用所有模式的相同映射)。
vmap ,pt :!perltidy<CR>
nmap ,pt :%! perltidy<CR>
在正常模式下点击,pt
以清理整个文件,或以可视模式点击以清除选择。您还可以添加:
imap ,pt <ESC>:%! perltidy<CR>
但不推荐使用输入模式的命令。
答案 1 :(得分:3)
" 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>
答案 2 :(得分:3)
另请参阅perl-support.vim(Vim / gVim的Perl IDE)。 附带定制Vim(.vimrc),gVim(.gvimrc)的建议, ctags,perltidy和Devel:SmallProf除了许多其他东西。
答案 3 :(得分:3)
Perl Best Practices在Editor Configurations上有一个附录。 vim是第一个列出的编辑器。
答案 4 :(得分:3)
Andy Lester和其他人maintain Gimub上的Vim官方Perl,Perl 6和Pod支持文件:https://github.com/vim-perl/vim-perl
答案 5 :(得分:2)
为了整理,我使用以下内容;要么\t
整理整个文件,要么在shift+V
模式中选择几行,然后执行\t
nnoremap <silent> \t :%!perltidy -q<Enter>
vnoremap <silent> \t :!perltidy -q<Enter>
有时它对解析代码也很有用。如上所述,可以是整个文件,也可以是选择。
nnoremap <silent> \D :.!perl -MO=Deparse 2>/dev/null<CR>
vnoremap <silent> \D :!perl -MO=Deparse 2>/dev/null<CR>
答案 6 :(得分:1)
的.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
答案 7 :(得分:1)
以下是我的几个.vimrc设置。它们可能不是Perl特定的,但没有它们我就无法工作:
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>
答案 8 :(得分:1)
这是我周末发现的一个有趣模块:App::EditorTools::Vim
。它最有趣的功能似乎是它能够重命名词法变量。不幸的是,我的测试显示它似乎尚未准备好用于任何生产用途,但它确实值得关注。
答案 9 :(得分:1)
我有2个。
我知道的第一个我从别人那里拿到了一部分,但我不记得是谁。抱歉未知的人。以下是我使用Perl进行“C ^ N”自动完成工作的方法。这是我的.vimrc命令。
" to use CTRL+N with modules for autocomplete "
set iskeyword+=:
set complete+=k~/.vim_extras/installed_modules.dat
然后我设置了一个cron来创建installed_modules.dat文件。我的是mandriva系统。相应调整。
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
第二个允许我在Perl中使用gf。 Gf是其他文件的快捷方式。只需将光标放在文件上并键入gf,它就会打开该文件。
" 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')
答案 10 :(得分:1)
我发现以下缩写很有用
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>
您只能使用
制作perlau bufenter *.pl iab xbug print "<p>zdebug ::: $_ :: $' :: $` line ".__LINE__."\n";exit;
答案 11 :(得分:0)
到目前为止最有用的是
安装他的插件有点不对劲,因为vim(和linux)的版本将插件放在不同的地方。我的是〜/ .vim / after /
我的.vimrc。
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