Всё, что вы делаете в 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 ;-)

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

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