SlideShare a Scribd company logo
Vim or Die
Иван Евтухович
Оверсан-Скалакси
http://scalaxy.ru
http://railsclub.ru
Win or Die
Vim = победа
Без «священных»
войн
Конструктивно
По-делу
Стиральная
машина
Посудомоечная
машина
Водопровод
Дурацкие ответы
● Большую часть времени я не мою посуду
● Я привык к одноразовым тарелкам
● Стирать белье мне приходится редко
● Мои носки не так и воняют
● Мне не сложно сходить по воду
● В конце-концов можно протереться влажным
полотенцем
Почему вы до сих пор не
используете
Слепой
десятипальцевый
метод?
Vim or die
Bram Moolenaar
Перемещения
h j k l
← ↓ ↑ →
PageUp Ctrl-B
PageDown Ctrl-F
½ PageUp Ctrl-U
½ PageDown Ctrl-D
↓ Ctrl-E
↑ Ctrl-Y
H
M
L
Home 0, ^
Center gm
End $
Ctrl← b, B, ge, gE
Ctrl→ w, W, e, E
Режимы Vim
● Normal mode (Ctrl-C, Esc)
● Visual mode (v, V, Ctrl+V)
● Insert mode
● Command-line mode (:)
● другие
:help vim-modes
Вставка
● i, a — вставка до/после курсора
● I, A — вставка в начале/конце строки
● o, O — вставка с новой строки спереди/сзади
● R — вставка в режиме замены
● Ctrl-C — выход в «нормальный» режим
Tab
все команды дополняются <Tab>
● :help дополняется <Tab>
set wildmenu
set wildmode=list:longest
set wcm=<Tab>
:e<Tab> - на следующем слайде
Vim or die
:q — выйти
:w — сохранить текущий файл
:wq или :x — сохранить и выйти
:e — открыть для редактирования
:tabe — открыть в новом табе
:split — открыть в новом окне
Самый сложный вопрос
Удаление и копирование
● D — удалить до конца строки
● x — удалить символ
● dd — удалить строчку (100dd — сто строк)
● yy — скопировать строку (yw, ye)
● P, p — вставить скопированное до или после
УЖАС!!!!
Мышь — зло!!!
Стрелки — зло!!!
Конец
доклада
< 0,17%
Живем ли мы зря?
Поиск
/текст
/Text.*Mate ..вно
/Хочу d$
/def funcname
n
N
*
Добавить в ~/.vimrc
set hlsearch
set incsearch
Поставить plugin IndexedSearch
:%s/(ema.s|tex.mat.)/vim (1 — sux)/
1. % - где искать (1,100 500,$)
2. (ema.s|tex.mat.) - RegExp
3. 1 — первое соответствие ( )
everybody
loves
vim
%s/.*/def 0^M get_from_outersystem(:0)^Mend^M/
def everybody
  get_from_outersystem(:everybody)
end
def loves
  get_from_outersystem(:loves)
end
def vim
  get_from_outersystem(:vim)
end
:grep pattern * -ri
:cl
:cn
:cp
:copen
Vim or die
И еще...
● автодополнение
● подсветка синтаксиса
● фолдинг
● автоотступы
● undo/redo (U, Ctrl-R)
● цветовые схемы
● назначить клавиши для всего (но лучше
стандарт)
● написать скрипт для всего (даже на ruby)
Табы
● :tabe filename
● :tabnew
● :[n]tabnext ([n]gt)
● :tabprevious (gT)
Окна
● :split filename
● :vsplit filename
● Ctrl-W h,j,k,l — перемещение между окнами
● Ctrl-W q — закрыть окно
Vim or die
Аргументы строки
vim 1.txt 2.txt 3.txt
:n
:p
:args
Буферы
:buffers, :ls — список всех буферов
:bn
:bp
[n]Ctrl-^ - переход к буферу (альтернативному)
:TOhtml
А как вы пишете в ваш
блог?
:vertical diffsplit 1.txt 2.txt
Макросы
q a j 0 i ( Ctrl-C $ a ) q
10 @ a
Метки
ma
mA
`a
'A
:jumps
Ctrl-I Ctrl-O
% - переход по соответствующим скобкам
(MatchIt — do..end)
Никого не хочу
агитировать
Vim or die
Vim or die
Vim or die
Vim or die
Для настоящих мужчин
Tim Pope
● vim-pathogen
● vim-rails
● vim-fugitive
● vim-haml
● vim-cucumber
● vim-surround
Vim-pathogen
● Способ управления плагинами для vim
● Каждый плагин в своей папке
● Посмотреть можно здесь
● Для счастья надо 2 файла:
● update_bundles
● .vimrc
Плагины
● snipmate
● surround
● tcomment (gc)
● fugitive
● gist
vim-ruby
● подсветка
● автодополнение по (Ctrl-X Ctrl-O)
vim-rails
● :Rfind
● gf — перейти к файлу (учитывая контекст)
● :A, :AT, :AV — перейти к альтернативному
файлу
● :R, :RT, :RV — перейти к связанному файлу
● :R[TV]view / :Rlayout
● :Rmodel
● :Rcontroller
● :Rmigration
● :Rfixtures
● :Rspec / :Runittest
● :Rhelper
● :Rlib
● :Rjavascript / :Rstylesheet
● :Rextract
NerdTree
TagList
Помощь
:help anything
Vim никогда нельзя выучить до
конца
Лучший способ понять Vim —
это практика
Реклама
Платные курсы по Vim
Дорого!
Долго!
Derek Wyatt
http://vimeo.com/user1690209
Eclipse
● Vrapper
● eclimd
Вопросы
Спасибо за внимание
evtuhovich@gmail.com
@evtuhovich

More Related Content

PDF
По колено в Си++ г... коде
Tatyanazaxarova
 
PDF
Debug php apps with xdebug in PHPstorm
Андрей Стадник
 
PDF
Devel::PPAP
Ruslan Zakirov
 
PPTX
Двойная (каскадная) шаблонизация в Django
Sergei Erjemin
 
PDF
Hf labs education day. rocket science
Olga Kiseleva
 
PPT
Методы поиска уязвимостей в программах
Vasiliy Shapovalov
 
PPT
Методы поиска уязвимостей
solertia
 
PPTX
Funny JS #1
Alexander Konovalov
 
По колено в Си++ г... коде
Tatyanazaxarova
 
Debug php apps with xdebug in PHPstorm
Андрей Стадник
 
Devel::PPAP
Ruslan Zakirov
 
Двойная (каскадная) шаблонизация в Django
Sergei Erjemin
 
Hf labs education day. rocket science
Olga Kiseleva
 
Методы поиска уязвимостей в программах
Vasiliy Shapovalov
 
Методы поиска уязвимостей
solertia
 
Funny JS #1
Alexander Konovalov
 

What's hot (16)

PDF
Систематизация экспрешнов в IE
Roman Komarov
 
PPTX
CiklumCPPSat: Anton Kukoba_Reassembling and restoring C/C++ from assembler
Ciklum Ukraine
 
PPTX
Android emulators features
Roman Butok
 
PPTX
урок2
ssuserea1bb3
 
PDF
Вредные советы программистам
Denis Kovalev
 
PDF
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Unigine Corp.
 
PDF
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Moscow.pm
 
PPTX
1 вводное занятие
luis_blanco_rau
 
PDF
Почему Mojolicious?
Anatoly Sharifulin
 
PDF
Пожиратели памяти в WordPress
Konstantin Kovshenin
 
PPTX
Нетривиальная обработка ошибок
oelifantiev
 
PPTX
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest
 
PPT
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Unigine Corp.
 
ZIP
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Транслируем.бел
 
Систематизация экспрешнов в IE
Roman Komarov
 
CiklumCPPSat: Anton Kukoba_Reassembling and restoring C/C++ from assembler
Ciklum Ukraine
 
Android emulators features
Roman Butok
 
урок2
ssuserea1bb3
 
Вредные советы программистам
Denis Kovalev
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Unigine Corp.
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Moscow.pm
 
1 вводное занятие
luis_blanco_rau
 
Почему Mojolicious?
Anatoly Sharifulin
 
Пожиратели памяти в WordPress
Konstantin Kovshenin
 
Нетривиальная обработка ошибок
oelifantiev
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Unigine Corp.
 
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Транслируем.бел
 
Ad

Viewers also liked (13)

PPT
Дэдлоки
Александр Ежов
 
PDF
NeoGenomics Company Overview Presentation 2016 03 14
NeoGenomics Laboratory | Cancer Diagnostics
 
PDF
ISO Certificate
Md. Zoherul. Haque
 
PDF
Understanding Fear - Intro & Chapter 01 - Bonaro W. Overstreet
ManikantKant
 
PDF
Directed evolution of a recombinase that excises the provirus of most HIV-1 p...
Carola Schäfer
 
PDF
Logo usis
UCIS
 
DOCX
Resume update 3
Lawrence Puckett
 
PPT
Peter Mara Expert in Wind Energy and Wind Power
Peter Mara
 
PPTX
Model Weapons Expert Riley's Motorcycle Presentation
Benjamin Pope
 
PDF
Foro “DESARROLLO DE LAS CIENCIAS DEL ESPACIO PARA LA CONSERVACIÓN DEL MEDIO A...
Barthelemy D Ans
 
PPTX
Biomedical Instrumentation
Manipal University Jaipur
 
PPTX
Introduction to biomedical instrumentation
Sikkim Manipal Institute Of Technology
 
PPTX
Implicate order & Explicate order
Hitoshi Tsuchiyama
 
NeoGenomics Company Overview Presentation 2016 03 14
NeoGenomics Laboratory | Cancer Diagnostics
 
ISO Certificate
Md. Zoherul. Haque
 
Understanding Fear - Intro & Chapter 01 - Bonaro W. Overstreet
ManikantKant
 
Directed evolution of a recombinase that excises the provirus of most HIV-1 p...
Carola Schäfer
 
Logo usis
UCIS
 
Resume update 3
Lawrence Puckett
 
Peter Mara Expert in Wind Energy and Wind Power
Peter Mara
 
Model Weapons Expert Riley's Motorcycle Presentation
Benjamin Pope
 
Foro “DESARROLLO DE LAS CIENCIAS DEL ESPACIO PARA LA CONSERVACIÓN DEL MEDIO A...
Barthelemy D Ans
 
Biomedical Instrumentation
Manipal University Jaipur
 
Introduction to biomedical instrumentation
Sikkim Manipal Institute Of Technology
 
Implicate order & Explicate order
Hitoshi Tsuchiyama
 
Ad

Similar to Vim or die (15)

KEY
ДАМП - VIM для вёрстки
Oleg Mokhov
 
ODP
About Python
Yury Yurevich
 
PPTX
Ruby - или зачем мне еще один язык программирования?
Pavel Tsukanov
 
PPTX
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
 
PDF
Clojure #2 (2014)
Alexander Podkhalyuzin
 
PDF
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
 
PDF
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
corehard_by
 
PPTX
PowerShell
GetDev.NET
 
PPTX
Shell for developers
Slava Semushin
 
PDF
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
 
PDF
Использование cygwin для автоматизации процессов тестирования в Windows
SQALab
 
PPTX
Yeoman generator своими руками
chaykaborya
 
PPTX
JavaScript: хороший тон клиентской разработки
GetDev.NET
 
PDF
Romanova techforum bash
kuchinskaya
 
PDF
Groovy presentation.
Infinity
 
ДАМП - VIM для вёрстки
Oleg Mokhov
 
About Python
Yury Yurevich
 
Ruby - или зачем мне еще один язык программирования?
Pavel Tsukanov
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
 
Clojure #2 (2014)
Alexander Podkhalyuzin
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
 
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
corehard_by
 
PowerShell
GetDev.NET
 
Shell for developers
Slava Semushin
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
 
Использование cygwin для автоматизации процессов тестирования в Windows
SQALab
 
Yeoman generator своими руками
chaykaborya
 
JavaScript: хороший тон клиентской разработки
GetDev.NET
 
Romanova techforum bash
kuchinskaya
 
Groovy presentation.
Infinity
 

More from Александр Ежов (20)

PDF
Кеширование данных в БД
Александр Ежов
 
PDF
Борьба с багами: RailsClub на DevConf 2015
Александр Ежов
 
PDF
Rails 5: awesome features and breaking changes
Александр Ежов
 
PDF
Big Data и Ruby
Александр Ежов
 
PDF
Abstract machines for great good
Александр Ежов
 
PPT
Rubt on Rails: 1000 запросов в секунду
Александр Ежов
 
PPT
Liquor, Liquid и другие безопасные языки разметки в RoR
Александр Ежов
 
PDF
Capistrano Rails
Александр Ежов
 
PDF
Умное кэширование в Rails
Александр Ежов
 
PPT
Sphinx как база данных
Александр Ежов
 
ODP
Emacs и Rails
Александр Ежов
 
PPT
Антикризисная презентация
Александр Ежов
 
PPT
Eventmachine: структура evented-приложений
Александр Ежов
 
PDF
Обзорное сравнение серверов приложений для Rails
Александр Ежов
 
PDF
Приложения в плагинах
Александр Ежов
 
PDF
Использования PgQ и Londste в rails-приложении
Александр Ежов
 
PDF
Масштабирование в Rails
Александр Ежов
 
PDF
Интернационализация и локализация Ruby on Rails. gem russian
Александр Ежов
 
PDF
Как сделать контрибут в Ruby on Rails
Александр Ежов
 
PDF
Проблемы при работе с разными версиями Ruby и разными gem
Александр Ежов
 
Кеширование данных в БД
Александр Ежов
 
Борьба с багами: RailsClub на DevConf 2015
Александр Ежов
 
Rails 5: awesome features and breaking changes
Александр Ежов
 
Big Data и Ruby
Александр Ежов
 
Abstract machines for great good
Александр Ежов
 
Rubt on Rails: 1000 запросов в секунду
Александр Ежов
 
Liquor, Liquid и другие безопасные языки разметки в RoR
Александр Ежов
 
Capistrano Rails
Александр Ежов
 
Умное кэширование в Rails
Александр Ежов
 
Sphinx как база данных
Александр Ежов
 
Антикризисная презентация
Александр Ежов
 
Eventmachine: структура evented-приложений
Александр Ежов
 
Обзорное сравнение серверов приложений для Rails
Александр Ежов
 
Приложения в плагинах
Александр Ежов
 
Использования PgQ и Londste в rails-приложении
Александр Ежов
 
Масштабирование в Rails
Александр Ежов
 
Интернационализация и локализация Ruby on Rails. gem russian
Александр Ежов
 
Как сделать контрибут в Ruby on Rails
Александр Ежов
 
Проблемы при работе с разными версиями Ruby и разными gem
Александр Ежов
 

Vim or die