vim
Выбрать синтаксис редактируемого файла
: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
Отсортировать весь файл с помощью sort
:%!sort
увеличить/уменьшить число под курсором на 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+ww - переключиться между окнами
Ctrl+w{h,j,k,l} - перейти к окну левее, ниже, выше, правее
Проставить отступы для всего документа
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<<