Всё, что вы делаете в Vim неправильно

Вячеслав Олиянчук, Яндекс

Вячеслав Олиянчук

Всё, что вы делаете в Vim неправильно

miripriuni@WebStandardsDays

1. Плагины через Pathogen

github.com/gmarik/vundle

github.com/gmarik/vundle

.vimrc:
					set runtimepath+=~/vimi/.vim/bundle/vundle/
					call vundle#rc()
					Bundle 'git://github.com/miripiruni/vimi-snippets.git'
					Bundle 'gmarik/vundle'
					Bundle 'FuzzyFinder'
				

github.com/gmarik/vundle

  • :BundleInstall
  • :BundleSearch
  • :BundleClean

github.com/gmarik/vundle

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

2. grep

BetterThanGrep.com

Используйте Ack

betterthangrep.com и github.com/mileszs/ack.vim

  • Улучшенный вывод
  • Улучшенная строка запроса
  • Рекурсивный по умолчанию
  • Ищет гораздо быстрее
  • По умолчанию не ищет там, где не нужно искать
					$ grep -n todo
					common.js:421: refactoring todo:
					common.js:469: TODO: the call to toJSON here to ...
					common.js:602: TODO: handle duplicate strings!
					application.js:145: //TODO: (LATER) if multiple ...
					 
					$ ack todo
					common.js:
					    421: refactoring todo:
					    469: TODO: the call to toJSON here to turn ...
					    602: TODO: handle duplicate strings!
					application.js:
					    145: //TODO: (LATER) if multiple fixups go ...
				

alias grep='ack'

3. Сниппеты в Snipmate

github.com/rygwdn/UltiSnips

Плейсхолдеры и табстопы

					snippet a
					<a href="$1"${2: class="${3:link}"}>
					    $0
					</a>
					endsnippet
				

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

					snippet title "Titelize in the Transformation"
					${1:a text} ${1/\w+\s*/\u$0/}
					endsnippet
				

Пишем: title<tab>this is a title

Результат: this is a title This Is A Title

Конвертор сниппетов из TextMate

4. Монтирование папок

Screen

					if [ $SHLVL == 1 ]; then
					  screen -RR -D
					fi
				

Не забывайте, что есть * и #

6. Выделение текста

6. Выделение текста

...для чего?

:h text-objects

Замена текста

Операции с текстовыми объектами

действие область объект

Действия:
c заменить
y скопировать
d удалить
Области:
i внутри объекта
а включая объект
Объекты:
w слово
t тег
} абзац
" текст в кавычках
...

Слова

7. Лишние движения курсора

Быстрый способ начать писать ;)

Используйте:
  • для текущей строки — A C I
  • волшебное — gi
  • для определенных точек — фичу :marks

8. GUI табы/вкладки

Используйте смесь сплитов и буферов

Домашнее чтение:

  • :h ls
  • :h sp :h vsp
  • :h CTRL_W
  • :h bufdo

9. Клавиши стрелок

Nightmare mode

					noremap <Up> <NOP>
					noremap <Down> <NOP>
					noremap <Left> <NOP>
					noremap <Right> <NOP>
				

10. Привычка нажимать на Esc

Используйте Ctrl [
или Ctrl C

github/miripiruni/vimi

github/miripiruni/vimi

  1. Дотошно откомментированный .vimrc
  2. Набор полезных vim-фич
  3. Предустановленные плагины для веб-разработки
  4. Удобные шорткаты
  5. Круглосуточный support ;-)

Спасибо за внимание!

Вячеслав Олиянчук, Яндекс