it-swarm.dev

Was sind Ihre Vorschläge für eine ideale Vim-Konfiguration für die Perl-Entwicklung?

Es gibt eine Menge Threads, die sich mit der Konfiguration von Vim/GVim für die Perl-Entwicklung befassen auf PerlMonks.org . Mit dieser Frage möchte ich versuchen, mit Vim/GVim so weit wie möglich eine ideale Konfiguration für die Perl-Entwicklung zu erstellen. Bitte posten Sie Ihre Vorschläge für .vimrc Einstellungen sowie nützliche Plugins.

Ich werde versuchen, die Empfehlungen in eine Reihe von .vimrc-Einstellungen und in eine Liste empfohlener Plugins, ftplugins und Syntaxdateien zusammenzuführen.

.vimrc Einstellungen

"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"

syntax

plugins

ftplugins

CPAN-Module

Debugging-Tools

Ich habe gerade von VimDebug erfahren. Ich konnte es noch nicht unter Windows installieren, sieht aber aus der Beschreibung vielversprechend aus.

58
Sinan Ünür

Aus Chromatics Blog (leicht angepasst, um dasselbe Mapping aus allen Modi verwenden zu können).

vmap ,pt :!perltidy<CR> 
nmap ,pt :%! perltidy<CR>

drücken Sie ,pt im normalen Modus, um die gesamte Datei zu bereinigen, oder im visuellen Modus, um die Auswahl zu bereinigen. Sie könnten auch hinzufügen:

imap ,pt <ESC>:%! perltidy<CR>

Die Verwendung von Befehlen aus dem Eingabemodus wird jedoch nicht empfohlen.

4
Ether

Best Practices für Perl enthält einen Anhang zu Editor-Konfigurationen . vim ist der erste aufgeführte Editor.

3
Permanuno

Schauen Sie sich auch Perl-support.vim an (ein Perl IDE für Vim/gVim). Enthält Vorschläge zum Anpassen von Vim (.vimrc), gVim (.gvimrc), ctags, perltidy und Devel: SmallProf neben vielen anderen Dingen.

3
Fritz G. Mehner

Andy Lester und andere pflegen die offiziellen Support-Dateien für Perl, Perl 6 und Pod für Vim on Github: https://github.com/vim-Perl/vim-Perl

3
daxim
" 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>
3
hobbs

Zum Aufräumen benutze ich folgendes; Entweder \t, um die ganze Datei aufzuräumen, oder ich wähle ein paar Zeilen im shift+V-Modus aus und \t dann

nnoremap <silent> \t :%!perltidy -q<Enter>
vnoremap <silent> \t :!perltidy -q<Enter>

Manchmal ist es auch nützlich, Code zu deparsen. Wie die obigen Zeilen, entweder für die gesamte Datei oder für eine Auswahl.

nnoremap <silent> \D :.!Perl -MO=Deparse 2>/dev/null<CR>
vnoremap <silent> \D :!Perl -MO=Deparse 2>/dev/null<CR>
2
mfontani

Ich habe 2.

Das erste, von dem ich weiß, dass ich einen Teil davon von jemand anderem abgeholt habe, aber ich kann mich nicht erinnern, an wen. Entschuldigung unbekannte Person. Hier ist, wie ich "C ^ N" mit Perl automatisch vervollständigen ließ. Hier sind meine .vimrc-Befehle.

" to use CTRL+N with modules for autocomplete "
set iskeyword+=:
set complete+=k~/.vim_extras/installed_modules.dat

Dann habe ich einen Cron eingerichtet, um die Datei built_modules.dat zu erstellen. Meins ist für mein Mandriva-System. Dementsprechend anpassen.

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

Das zweite erlaubt mir, gf in Perl zu benutzen. Gf ist eine Verknüpfung zu anderen Dateien. Platzieren Sie einfach Ihren Mauszeiger über die Datei und geben Sie gf ein. Die Datei wird dann geöffnet.

" 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')
1
J.J.

Ich finde die folgenden Abkürzungen nützlich

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>

Sie können sie nur mit Perl machen

au bufenter *.pl iab xbug print "<p>zdebug ::: $_ :: $' :: $`  line ".__LINE__."\n";exit;
1
zzapper

Hier sind einige meiner .vimrc-Einstellungen. Sie sind möglicherweise nicht Perl-spezifisch, aber ohne sie könnte ich nicht arbeiten:

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>
1
innaM

.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
1
zigdon

Hier ist ein interessantes Modul, das ich am Wochenende gefunden habe: App::EditorTools::Vim . Das interessanteste Merkmal scheint die Fähigkeit zu sein, lexikalische Variablen umzubenennen. Leider haben meine Tests ergeben, dass es noch nicht für den produktiven Einsatz bereit zu sein scheint, aber es scheint sich sicher zu lohnen, ein Auge darauf zu werfen.

1
innaM

Bei weitem die nützlichsten sind

  1. Perl-Dateityp-Plug-In (ftplugin) - Mit diesem Plug-In werden verschiedene Codeelemente farblich gekennzeichnet
  2. Erstellen eines Befehls "W" zum Überprüfen der Syntax vor dem Speichern, um zu verhindern, dass fehlerhafter Code gespeichert wird (Sie können ihn mit dem normalen "w" überschreiben).

Die Installation der Plugins ist etwas kompliziert, da die Version von vim (und Linux) die Plugins an verschiedenen Stellen platziert. Meine sind in ~/.vim/after /

meine .vimrc unten.

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
0
Benno