Что вы предлагаете для идеальной конфигурации Vim для разработки на Perl?

56

Существует много тем, связанных с настройкой Vim/GVim для разработки Perl на PerlMonks.org. Моя цель в публикации этого вопроса - попытаться создать, насколько это возможно, идеальную конфигурацию для разработки Perl с помощью Vim/GVim. Пожалуйста, разместите свои предложения для настроек .vimrc, а также полезных плагинов.

Я попытаюсь объединить рекомендации в набор параметров .vimrc и список рекомендуемых плагинов, ftplugins и синтаксических файлов.

.vimrc settings

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

синтаксис

плагины

ftplugins

Модули CPAN

Инструменты отладки

Я только что узнал о VimDebug. Мне еще не удалось установить его в Windows, но он выглядит многообещающим из описания.

  • 3
    Настройки .vimrc должны быть тщательно прокомментированы. Например, что делает perl_include_pod?
  • 3
    Спасибо! (Дорогой Господь, почему мы не можем сказать «Спасибо!» В комментарии?)
Показать ещё 6 комментариев
Теги:
vim
configuration

12 ответов

4

Из хроматический блог (слегка адаптированный, чтобы иметь возможность использовать одно и то же отображение из всех режимов).

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

нажмите ,pt в нормальном режиме, чтобы очистить весь файл или в визуальном режиме, чтобы очистить выбор. Вы также можете добавить:

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

Но использование команд из режима ввода не рекомендуется.

  • 0
    Кажется, что-то здесь не хватает: как мне набрать ptv без vim, запускающего perltidy для всего файла?
  • 0
    Комментарий Овидия (# 3), кажется, предлагает гораздо лучшее решение.
Показать ещё 6 комментариев
3

Энди Лестер и другие поддерживают официальные файлы поддержки Perl, Perl 6 и Pod для Vim on Github: https://github.com/vim-perl/vim-perl

  • 0
    Обратите внимание, что эта ссылка уже указана в основной части вопроса (см. Синтаксис ).
3

Perl Best Practices имеет приложение на Конфигурации редактора. vim - первый редактор.

3

Посмотрите также perl-support.vim (Perl IDE для Vim/gVim). Поставляется с предложениями по настройке Vim (.vimrc), gVim (.gvimrc), ctags, perltidy и Devel: SmallProf рядом со многими другими вещами.

  • 2
    Я ненавижу это. Одна только функция комментариев заслуживает тщательного 'rm -rf', ИМХО.
  • 1
    Я ненавижу тот факт, что \ $ автоматически заменяется объявлением «моего $» (то же самое с \ @ и \%). Автор никогда не использует ссылки или что ?!
Показать ещё 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

Для упорядочивания я использую следующее: либо \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>
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>

Вы можете сделать их perl только с помощью

au bufenter *.pl iab xbug print "<p>zdebug ::: $_ :: $' :: $`  line ".__LINE__."\n";exit;
  • 0
    там нигде нет my ; Я так понимаю, вы обычно пишете CGI без use strict; правил use strict; ? (просто любопытно, если это так)
  • 1
    Ого, и без CGI.pm также. Это как 15-летний ретроспективный кадр.
1

У меня есть 2.

Первое, что я знаю, я взял часть его от кого-то другого, но я не помню, кто. Извините, неизвестно. Здесь, как я сделал "C ^ N" автоматическую полную работу с Perl. Здесь мои команды .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

Второй позволяет мне использовать gf в Perl. 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')
1

Вот интересный модуль, который я нашел в выходные: App::EditorTools::Vim. Его наиболее интересной особенностью является ее способность переименовывать лексические переменные. К сожалению, мои тесты показали, что он пока не готов для любого использования в производстве, но, похоже, стоит обратить внимание.

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>
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
  • 0
    Что такое pltags.pl? Это лучше чем ctags?
  • 2
    Я думаю, что search.cpan.org/perldoc/Perl::Tags основан на этом.
Показать ещё 7 комментариев
0

Самыми полезными являются

  • Perl filetype pluging (ftplugin) - этот цвет-код различного кода элементы
  • Создание команды check-syntax-before-saving "W" не позволяя вам сохранить плохой код (вы можете переопределить нормальный "w" ).

Установка его плагинов немного затруднительна, так как версия vim (и linux) помещает плагины в разные места. Мои находятся в ~/.vim/after/

my.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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню