Выбрать синтаксис редактируемого файла
:set ft=ruby
Способы перейти в режим вставки
- i - вставить текст слева от текущего
- I - вставить текст в начало строки
- a - вставить текст справа от текущего символа
- A - вставить текст в конец текущей строки
- o - создать новую строку под текущей
- O - создать новую строку над текущей
- C - заменить всё до конца строки
- r - заменить 1 символ
- 3s - удалить 3 символа и перейти в режим вставки
- ciW - заменить большое слово под курсором
- ci" - заменить текст между кавычками
- ci( - заменить текст между круглыми скобками
- gi - перейти к последнему месту, где производилось редактирование
Передвижение по тексту
- fx - Передвинуть курсор вперед к
следующему вхождению символа х в текущей строке
- tx - Передвинуть курсор вперед
к следующему вхождению символа х в текущей строке и установить курсор перед символом x
- Fx - Передвинуть курсор назад к предыдущему вхождению символа х в текущей строке
- w - Передвинуть курсор вперед на одно слово
- b - Передвинуть курсор назад на одно слово
- 0 - Передвинуть курсор на начало текущей строки
- ^ - Передвинуть курсор на первый символ в текущей строке
- $ - Передвинуть курсор на конец текущей строки
- * - начать поиск по слову под курсором
- # - начать поиск по слову под курсором в обратном порядке
- w - перейти к следующему слову
- W - перейти к следующему большому слову (тому, что разделено пробелом)
- b/e - перейти к началу/концу текущего слова
- B/E - перейти к началу/концу текущего большого слова
- gg/G - перейти в начало/конец файла
- % - перейти к парной скобке
- {/} - перейти к следующему/предыдущему параграфу
- '. - перейти к последнему месту, где производилось редактирование
Удаление данных
- 4dd - удалить 4 строки
- 3x - удалить 3 символа
- D - удалить от текущей позиции до конца строки
Способы сложного выделения текста
- v% - когда курсор установлен на одной из скобок - выделит всё до её пары.
- vib - выделить всё между двумя ближайшими к курсору круглыми скобками
- viB - выделить всё между двумя ближайшими к курсору фигурными скобками
- vi" - выделить всё между двумя ближайшими двойными кавычками
- vi' - выделить всё между двумя ближайшими одинарными кавычками
- ggVG - выделить весь файл
- Ctrl+v - выделять прямоугольником
Заменить все вхождения 'old' на 'new'
:%s/old/new/g
Заменить все вхождения 'old' на 'new' с запросом подтверждения
:%s/old/new/gw
Удалить все строки, не содержащие 'string'
:v/string/d
Удаление всех пустых строк в VIM
:g/^$/d
Сокращения для быстрого создания закомментированных участков кода
:ab #b /*************************************************
:ab #e *************************************************/
Заставить вим не раскрывать табы при редактировании makefile
# vim: set tabstop=4 shiftwidth=4 noexpandtab:
Открыть файл, но предопределить синтаксис редактора
$ vim "+set filetype=lisp" file.rb
Отправить весь буфер вима в grep
:%!grep data
Редактировать последний изменённый файл
$ vim `ls -t | head -n1`
Убрать символ переноса строки ^M в файле из windows двумя способами. ^M вводится как Ctrl-V Ctrl-M.
:set ff=unix
:w
:%s/^M//g
Заменить "foo" на "bar" в строках 127-215
:127,215s/foo/bar
С текущей строки до конца файла объеденить все строки в одну
:.,$j
Оба вида записи указывают на весь файл целиком
:1,j
:%
Начиная с текущей, удалить в следующих 21-ой строках те, что содержат слово foo
:.,+21g/foo/d
Начиная с текущего места и до конца файла удалить все строки что НЕ содержат "bar"
:.,$v/bar/d
Все строки, что содержат "foo" перенести в конец файла, в том же порядке, в каком они встречаются по документу
:%g/foo/m$
Все строки, что начинаются с пробела, объединить с предыдущими
:%g/^ /-1j
Во всех строках содержащих "foo", заменить "bar" на "zzz"
:%g/foo/s/bar/zzz/g
Между метками 'a' и 'b', объединить строки, что содержат 'foo' с теми что идут после них.
:'a,'bg/foo/j
Вставка содержимого из другого места
-
:r file.txt
-
прочитать и вставить содержимое файла 'file.txt' в место под курсором
-
:0r file.txt
-
вставить файл в начало документа
-
:$r file.txt
-
вставить файл в конец документа
-
:r !uptime
-
вставить вывод команды в место под курсором
Дописать содержимое буфера в конец другого файла
:w >>~/file.txt
увеличить/уменьшить число под курсором на 1
Ctrl+a
Ctrl+x
Изменить регистр символа под курсором на противоположный
~
Объединить текущую строку со следующей
J
В режиме вставки, комбинация Ctrl+R позволяет вставлять некоторые полезные вещи:
- " - последний удалённый/скопированный текст
- % - текущее имя файла
- * - содержимое буфера обмена (X11: primary selection)
- + - содержимое буфера обмена
- / - последний запрос поиска
- : - последняя команда
- . - последний вставленный текст
- - - последний маленький удалённый текст (меньше строки)
- =5*5 - вставит 25. Мини калькулятор
Дополнить слово в режиме вставки
Ctrl+p
Ctrl+n
Путешествие по результатам поиска.
Переход будет осуществляться по местам, которые были указаны явно:
- поиск с помощью /
- переход gg, G, [\d]G
Так же будут открываться другие файлы, где осуществлялись подобные действия.
Ctrl+o
Ctrl+i
Работа с сессиями
Сохраняем
:mks sessionname
" или принудительно:
:mks! sessionname
Загружаем
$ vim -S sessionname
Работа со встроенным файловым менеджером. Вызвать его можно командой :Explore или попытавшись открыть на редактирование каталог :sp ./
- - - перейти на каталог выше
- mf - пометить файл
- D - удалить помеченые файлы. Удалит файл под курсором, если помеченых нет
- R - переименовать файл под курсором
- d - создать новый каталог
- % - создать новый файл
отправить текущий файл на исполнение питоном
:!python %
работа с несколькими окнами
-
Ctrl+wv - разбить окно по вертикали
-
Ctrl+ws - разбить окно по горизонтали
-
Ctrl+ww - переключиться между окнами
-
Ctrl+w{h,j,k,l} - перейти к окну левее, ниже, выше, правее
-
Ctrl+w{<,>,+,-} - изменить размеры текущего окна
-
Ctrl+wq - закрыть окно
Проставить отступы для всего документа
gg=G
Для того чтобы это работало - надо добавить в .vimrc следующую строку:
filetype plugin indent on
Копируем содержимое строк выше/ниже курсора, не покидая режима вставки
-
Ctrl+y - вставить символ над курсором
-
Ctrl+e - вставить символ под курсором
Отбросить правки до последнего сохранённого состояния
:e!
- Q - войти в ex-режим
- :vi - выйти из ex-режима
Удалить все строки что не содержат слова "git"
:v/git/d
:g!/git/d
Для всех строк, что содержат слово git добавить в начало '>>' и в конец '<<'. После слова norm - можно написать любую vim команду. В данном случае - 'I' - вставить в начало строки, 'A' - в конец.
:g/git/norm I>>ctrl+vescA<<
- 2-3 - habrahabr.ru
- 2-5, 16-25, 27, 29-38 - stackoverflow.com
- 6-8 - xtips.ru
- 9 - xtips.ru
- 10 - citkit.ru
- 13 - habrahabr.ru
- 15 - chesser.ru
Ссылки по теме:
- www.rayninfo.co.uk - лучшие подсказки по vim
- vimdoc.sourceforge.net - документация по vim онлайн
- vim.wikia.com
- vimbits.com - Куча трюков из vimrc
- bytefluent.com - просмотр и составление цветовой схемы для vim