Инструменты пользователя

Инструменты сайта


public:pavel:develop:vim

Это старая версия документа!


VIM

Плагины

Каталог плагинов

  1. DoctorJS - предоставляет jsctags, необходимо поставить патч для совместимости с nodejs-0.10 (подробности)
  2. Проверка синтаксиса
  3. DetectIndent — плагин для автоматического определения стилей отступов в файлах (expandtab, tabstop, shiftwidth) подробности
  4. vim-shell — плагин для выполнения внешних команд подробности
  5. vim-project — плагин для работы с проектами. Предоставляет стартовый экран, выполнение функций при открытии проектов (например, догрузку vim-скрипта для проекта)
  6. vim-startify — ещё один стартовый экран (закладки, сессии и т.п.)
  7. Auto Pairs — автоматическая вставка парных символов (скобки, кавычки и т.п.)
  8. Universal Tags — продолжение ctags (github)

JavaScript IDE

Индексирование

Индексирование с помощью DoctorJS (jsctags):

jsctags -f tags *.js

Валидация кода

Можно сделать с помощью jshint (плагин для vim)

Для автоматической проверки файла при сохранении добавьте строчку в ваш ~/.vimrc:

let jshint2_save = 1

Сниппеты

Для использования сниппетов установите плагин snipMate. Здесь доступны мои сниппеты. Дополнительно к стандартным есть вспомогательные для создания документирующих комментариев для JSDuck, описания модулей и классов для RequireJS.

PHP IDE

Индексирование

Индексирование с помощью ctags-exuberant:

Пример индексирования:

ctags-exuberant -f tags -h \".php\" -R --exclude=\"\.svn\" --totals=yes \
--tag-relative=yes --PHP-kinds=+cf --regex-PHP='/abstract class ([^ ]*)/\1/c/' \
--regex-PHP='/interface ([^ ]*)/\1/c/' \
--regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)/\2/f/'

Валидация кода

PHP QA Tools

Валидация будет выполняться при сохранении и по команде :Php

Для проверки только синтаксиса надо добавить в ваш .vimrc следующие строчки:

" PHP QA Tools {{{1
let g:phpqa_messdetector_autorun = 0
let g:phpqa_codesniffer_autorun = 0
let g:phpqa_codecoverage_autorun = 0
" 1}}}

Улучшение поддержки формата

Для упрощения работы с многострочными комментариями добавьте в свой ftplugin/php.vim следующие строчки:

setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
setlocal formatoptions-=t formatoptions+=croql

(скопировано из ftplugin/javascript.vim)

Так при начале новой строки в многострочном комментарии будет автоматически вставлен символ «*».

Управление проектами

Полезные плагины для работы с проектами:

  • NERD Tree — список файлов
  • NERD Tree Tabs — автоматическое открытие списка файлов
  • bufexplorer — список буферов

Проверка синтаксиса

Для проверки синтаксиса можно использовать специальные плагины для конкретных языков (например, для PHP и для JavaScript), либо универсальный плагин syntastic.

Syntastic выполняет проверку синтаксиса при сохранении файла. Строчки с ошибками выделяются в колонке с номерами строк. Список ошибок можно получить с помощью команды :Errors.

Syntastic поддерживается расширенной статусной строкой vim-airline, показывающей уведомление при наличии ошибок.

Хитрушки VIM-а

Пробельные символы в конце строк

Автоматическое удаление пробельных символов в конце строк при сохранении:

autocmd BufWritePre * :%s/\s\+$//e

Использование нескольких индексных файлов

Например для файлов tags-php и tags-js в корне проекта

set tags=./tags-php,tags-php;./tags-js,tags-js;

Определение стиля отступов

Можно добавлять в конец камент:

/* vim: set noet ts=4 sw=4: */

или:

/* ex:ts=4:sw=4:noet:foldmethod=marker */

Или воспользоваться плагином DetectIndent для автоматического определения стиля отступов. Можно ставить в pathogen. В свой ~/.vimrc добавляю параметры:

" Предпочтительные параметры:
let g:detectindent_preferred_expandtab = 0
let g:detectindent_preferred_indent = 4
let g:detectindent_max_lines_to_analyse = 256
 
" Выполнение команды DetectIndent для исходников javascript
autocmd FileType javascript :DetectIndent

Фоновое выполнение команд

Для фонового выполнения команд есть удобный плагин vim-shell. Для «vim-shell» требуется дополнительно ставить vim-misc от того же автора.

Пример выполнения фоновой команды:

:call xolox#misc#os#exec({'command': 'make project', 'async':1})

Я использую для выполнения скрипта обновления документации при сохранении исходника:

autocmd BufWritePost *.js  call xolox#misc#os#exec({'command': './update-client-doc.sh', 'async':1})
autocmd BufWritePost *.php call xolox#misc#os#exec({'command': './update-server-doc.sh', 'async':1})

Динамическая загрузка скриптов vim-а

Использую для загрузки вспомогательного конфига с перечнем проектов

if filereadable(expand("~/.vimrc.projects"))
    so ~/.vimrc.projects
endif

Регулярные выражения

Начало текста в строках

Допустим, есть текст:

aaa
   bbb
ccc
     ddd

Хотим получить:

ggg.aaa
   ggg.bbb
ggg.ccc
      ggg.ddd

Варианты решения:

:%s/\v(\s|^)@<=(\w)@=/ggg./
:%s/\v</ggg./

Help

Синтаксис поиска описания комбинаций клавиш: :help i_CTRL-P — где i - режим, CTRL-P - комбинация. Другой пример: :help i_CTRL-X_CTRL_O

public/pavel/develop/vim.1441273177.txt.gz · Последнее изменение: (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki