Подтвердить что ты не робот

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

Существует много тем, связанных с настройкой 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, но он выглядит многообещающим из описания.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

" 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

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

Ответ 6

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

Ответ 7

.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

Ответ 8

Вот пара моих настроек .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>

Ответ 9

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

Ответ 10

У меня есть 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')

Ответ 11

Я нахожу следующие аббревиатуры полезными

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;

Ответ 12

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

  • 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