diff options
Diffstat (limited to 'VIM.md')
| -rw-r--r-- | VIM.md | 479 |
1 files changed, 479 insertions, 0 deletions
@@ -0,0 +1,479 @@ +### Перемещение по экрану ### + +`H ( gg )` - в начало экрана +`M` - в середину экрана +`L ( G )` - в конец экрана +`(` - к предыдущему предложению +`)` - к следующему предложению +`{` - к предыдущему параграфу +`}` - к следующему параграфу + +### Перемещение по словам в строк ### + +В командах `b, e, B, E` - переход зависит от положения курсора в слове. + +`w` - в начало следующего слова +`W` - в начало следующего слова после пробела +`b` - в начало текущего/предыдущего слова (beginning) +`B` - в начало текущего/предыдущего слова перед пробелом +`e` - в конец текущего/следующего слова (end) +`E` - в конец текущего/следующего слова после пробела + +### Перемещение по строкe ### + +`0`, `Home` - к началу строки +`$`, `End` - к концу строки +`_`, `^` - к первому не пустому символу в строке +`g_` - к последнему не пустому символу в строке +`-` - к первому не пустому символу в строке сверху +`+` - к первому не пустому символу в строке снизу +`gg` - к первой строке +`G` - к последней строке +`ngg` - к строке под номером n (например: 45gg) +`nG` - к строке под номером n (аналог ngg) + +### Перемещение, по символам в строке ### + +`%` - к парной скобке вперед по тексту строки `()` `{}` `[]` +`f` и `X` - к следующему символу `X` в строке (`X` - любой символ) +`F` и `X` - к следующему символу `X` в строке (обратное направление) +`t` и `X` - перед символом `X` в строке (`till`) +`T` и `X` - перед символом `X` в строке (обратное направление) (`till`) +`;` - повторить переход в прямом направлении +`,` - повторить переход в обратном направлении + +### Поиск в документе ### + +- `/Выражение` - поиск текста вперед по документу от курсора +- `?Выражение` - поиск текста назад по документу от курсора +`\c` перед `Выражением` - совершит поиск без учета регистра + +В режиме поиска искомое слово будет подсвечено. +Отключить подсветку можно через косоль: +``` +:nohlsearch +``` +или поискать несуществующую ерунду ( `/asdfasd`) +`,` и `пробел` - Отключить подсветку поискового слова + +## Ввод текста ### +`insert mode` - режим редактирования + +`a` - добавить текст после курсора +`i` - добавить текст до курсора +`A` - добавить текст в конце строки +`I` - добавить текст в начале строки +`O` - добавить строку сверху курсора +`o` - добавить строку снизу курсора + +Все эти команды переключают vim в режим редактирования. + +`Esc` - _выход_ из режима редактирования + +## Выделение ### + +`visual mode` - режим выделения текста + +`v` - посимвольное выделение текста (visual) +`V` - построчное выделение текста `v + hjkl` - выделение текста `SHIFT + v` - выделить строку `CTR + v` - выделение прямоугольника `Esc` - _выход_ из режима выделения + +### Продвинутое выделение ### + +`vip` - выделить параграф +`viw` - выделить слово +`Shift+v` или `0v$` - выделить строку +`^v$` - выделить строку, начиная с первого непробельного символа +`vi(` - выделить всё между ближайшими круглыми скобками (аналогично `vi\[` и `vi\{` для квадратных и фигурных скобок) +`va(` - выделить всё между ближайшими круглыми скобками, включая сами скобки +`v2j` - выделить на две строки вниз +`dip` - вырезать параграф + +### Копирование и вставка ### +`y`[направление] - копировать символ под курсором по направлению (h, j, k, l, $, 0 и т.п.) +`yy` - копировать строку +`"*y` - копировать в системный буфер обмена для вставки в другое приложение (например браузер) +`p` - вставить после курсора (paste) +`P` - вставить до курсора +`gp` - вставить после курсора и переместить курсор на один символ вправо +`gP` - вставить до курсора и переместить курсор на один символ влево + +### Удаление (вырезка) текста ### +`x`, `DEL` - удалить (вырезать) символ под курсором +`X` - удалить (вырезать) символ до курсора (аналог backspace) +`d`[направление] - удалить (вырезать) символы по направлению (h, j, k, l, $, 0 и т.п.) +`dd` - удалить (вырезать) строку +`D` - удалить (вырезать) символы от курсора до конца строки + +### Изменение и замена текста ### + +`J` - объединить строку с нижней (join) +`r`[символ] - заменить символ под курсором (replace) +`R` - начать ввод с заменой текста (аналог кнопки insert) +`s` - заменить символ и начать ввод (substitute) +`S` - заменить строку и начать ввод +`c`[направление] - изменить символ по направлению (h, l, e, b и т.п.) +`C` - изменить строку от курсора до конца (change) +`~` - сменить регистр символа под курсором +`gu` - преобразовать в нижний регистр (для изменения - сместите курсор) +`gU` - преобразовать в верхний регистр (для изменения -сместите курсор) + +### Отмена действий ### + +`u` - отменить действие (undo) `:u\[ndo\]` +`U` - отменить все изменения в строке +`Ctrl+R` - вернуть отменённое действие `:red\[o\]` +`.` - повторить последнее изменение + +### Нумерация строк ### +`:set number` включить нумерацию строк +`:set nonumber` отключить нумерацию строк + +### Радактирование нескольких файлов ### + +Я считаю, что наиболее удобный способ редактирования нескольких файлов - использование вкладок. +Вы можете открыть несколько файлов на отдельных вкладках через командную строку, например, так: + +``` +vim -p file1.txt file2.txt +``` + +Или, если у вас уже открыт vim, вы можете открыть новый файл на новой вкладке, например: + +``` +:tabe file2.txt +``` + +Открыв вкладки, используйте `gt` для просмотра следующей вкладки и `gT` просмотра предыдущей вкладки. + +Вы также можете перейти к первой вкладке с помощью `1gt`, второй вкладке с помощью `2gt` и т. д. + +Вы можете закрыть вкладки, используя `:tabc` + +Наконец, вы можете переместить текущую вкладку в ту `n`-позицию, `:ntabm` где `n` любое число больше или равно 0. + +### Файл настройки: ~/.vimrc ### +```sh +# Можно редактировать файлы через сеть, например +:e <scp|ftp|ftps>://user@host/path/to/the/file.txt +:Ex или :e ./ - файловый менеджер + +#== Основы == +hjkl перемещение в разные стороны +i режим вставки +I добавление в начало строки +a режим добавления +A добавление в конец строки +o добавить строку сразу за текущей +O добавить строку перед текущей +R писать поверх имеющегося текста +u, :u[ndo] отмена предыдущего действия (undo) +CTR-R, :red[o] отмена отмены предыдущего действия (redo) +dd вырезать (удалить) строку +cc удалить и начать редактирование +yy копировать строку +p вставить из буфера обмена +<n>d удалить n+1 строку +<n>y скопировать n+1 строку +ESC перейти в режим просмотра +DEL удалить следующий символ +:<n> перейти на строку #n +% перейти к парной скобке +:e **/filename.c редактировать файл (с поиском по имени) +:w [fname] записать изменения +:wa сохранить изменения во всех файлах +:q выйти из редактора +:q! выйти из редактора, не сохраняя изменения +:color <name> выбор цветовой схемы. цветвые схемы: + /usr/local/share/vim/vim72/colors/*.vim +:pwd текущий каталог +:cd [path] перейти в другой каталог +:!команда выполнить команду - man, git, и так далее + стрелочками веерх и вниз можно автодополнять + команды и искать по истории +CTR+p или CTR+n автоматическое дополнение текста + (в режиме редактирования) +CTR+r,=,<expr> вставить выражение, например 5*2 - 3 + (в режиме редактирования) +CTR+u, CTR+d Page Up / Page Down +CTR+y, CTR+e Перемотка вверх/вниз без движения курсора + +#== Подсветка синтаксиса == +:syntax on включить подсветку +:syntax off выключить подсветку (по умолчанию) + +#== Перенос строк == +:set wrap разрешить word wrap (по умолчанию) +:set nowrap запретить word wrap + +#== Печать == +:ha[rdcopy] распечатать документ +:set printoptions=duplex:off отключить двустороннюю печать + +#== Сворачивание == +zc свернуть блок +zo развернуть блок +zM закрыть все блоки +zR открыть все блоки +za инвертирование +zf см :set foldmethod=manual +:set foldenable включить свoрачивание +:set foldmethod=syntax сворачивание на основе синтаксиса +:set foldmethod=indent сворачивание на основе отступов +:set foldmethod=manual выделяем участок с помощью v и говорим zf +:set foldmethod=marker сворачивание на основе маркеров в тексте +:set foldmarker=bigin,end задаем маркеры начала и конца блока + +#== Маркеры == +ma установить локальный маркер a +mB установить глобальный маркер B +`c перейти к локальному маркеру c +`0 вернуться на позицию, на которой закончили + работу при закрытии vim +:marks просмотр маркеров +set viminfo='1000,f1' маркеры пишутся в ~/.viminfo, восстанавливаясь + при следующем запуске vim. маркер хранит + последнюю позицию курсора в файле +#== Сессии == +mksession file.session сохранить текущую сессию +source file.session восстановить ранее сохраненную сессию + +#== Макросы == +qa записать макрос с именем a +q в режиме записи макроса: закончить запись +@a выполнить макрос с именем a +@@ повторить последний макрос + +#== Регистры == +ayy скопировать строку в регистр a +bdd вырезать строку и поместить в регистр b +С2d вырезать три строки и дописать в конец + регистра C +:reg [name1][name2][...] просмотреть содержимое регистров + +#== Выделение == +v + hjkl выделение текста +SHIFT + v выделить строку +CTR + v выделение прямоугольника +p вставить +y копировать +d удалить +gu к нижнему регистру +gU к верхнему регистру + +#== Отступы == +[#]> сдвинуть выделенное вправо +[#]< сдвинуть выделенное влево +[#]>> сдвинуть строку вправо +[#]<< сдвинуть строку влево +set tabstop=# для табуляции используется # пробелов +set shiftwidth=# в командах отступа используется # пробелов +set [no]expandtab заменять ли табуляцию на соответствующее + число пробелов + +#== Поиск и замена в файле == +/Выражение поиск выражения в файле +\cВыражение поиск без учета регистра +n следующее совпадение +N предыдущее совпадение +:%s/foo/bar/gi замена строк, см http://eax.me/regular-expr/ + +#== Поиск по всему проекту == +:vimgrep /EXPR/ **/*.c поиск по регулярному выражению +:copen показать все найденные места +:close скрыть все найденные места +:cn переход к следующему результату +:cp переход к предыдущему результату + +#== Нумерация строк == +:set number включить нумерацию строк +:set nonumber отключить нумерацию строк + +#== Работа с вкладками (a.k.a табами) == +:tabnew [fname] создать таб +:tabs вывести список табов +:tabn следующий таб +:tabp предыдущий таб +<n>gt перейти на таб #n +gt следующий таб +gT предыдущий таб +:tabm +1 переместить таб вперед на одну позицию +:tabm -1 переместить таб назад на одну позицию +:tabm 2 переместить таб на заданную позицию + (нумерация начинается с нуля) + +#== Работа с окнами == +:split горизонтальное разбиение +:vsplit вертикальное разбиение +Ctr+W, затем + с закрыть окно + +- изменение высоты текущего окна + <> изменение ширины текущего окна + = установить равный размер окон + hjkl или стрелочки перемещение между окнами + +#== Проверка орфографии == + mkdir -p ~/.vim/spell + cd ~/.vim/spell + wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug + wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl + wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug + wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl + +:set spell spelllang=ru,en включить проверку орфографии +:set nospell выключить проверку орфографии +]s следующее слово с ошибкой +[s предыдущее слово с ошибкой +z= замена слова на альтернативу из списка +zg good word +zw wrong word +zG ignore word + +#== Работа с кодировкой == +e ++enc=<имя кодировки> Редактирование файла в ??? кодировке +w ++enc=<имя кодировки> Сохранить файл в новой кодировке +set fileencodings=utf-8,koi8-r Список автоматически определяемых + кодировок в порядке убывания + приоритета + +#== Другое == +:set [no]wildmenu При авто-дополнении в командной строке над + ней выводятся возможные варианты +:set list Отображать табуляцию и переводы строк +q: История команд +. Повторение последней команды +#======================================================= + +a - insert после курсора +I - insert в начало текущей строки +o - создает строку ниже и insert +O - создает строку выше и insert + +gg - перейти в начало файла +1G - в начало +42G - на 42 строку +G - перейти на последний абзац + +0 - первый символ предложения +$ - последний символ предложения + +w - перейти в начало следующего слова +W - +b - перейти в начало предыдущего слова +B - +e - перейти в конец текущего слова +E - перейти в конец текущего слова (пробел) +( - перейти к началу текущего предложения +) - перейти к началу следующего предложения +{ - перейти к началу текущего абзаца +} - перейти к началу следующего абзаца +\[\[ - перейти к началу текущего раздела +\]\] - перейти к началу следующего раздела + +### Поиск: +/шаблонEnter - поиск вперед +?шаблонEnter - поиск назад + +### Замена текста: +cw - до конца слова +c2b - на 2 слова назад +c$ - в конец строки +c0 - в начало строки + +### Строки: +cc - полная замена строки +C - замена от текущего положения до конца строки +J - объединить текущую строку и следующую + (. - можно повторить) + +### Символы: +r - замена символа и переход в командный режим +R - замена символов от курсора вперед +~ - смена регистра +x - удалить символ под курсором +X - удалить символ перед курсором +50i*ESC - вставка 50 \* +25A\*=ESC - вставка 50 \*= + +### Замена текста: +s - замена символа +4s - замена 4 символов +S - замена всей строки +|| замена на && - курсор на первый символ -> 2r& + +### Удаление текста: +dw - удалить слово и пробел с курсора и до конца слова +dd - удалить строку целиком +D - удалить строку от курсора до конца строки +de - удаляет только слово с курсора и до конца слова +d$ - удаляет от курсора до конца строки +d0 - удаляет от курсора до начала строки +xp - поменять местами буквы + +### Команды: +u - отмена последней операции +ctrl+R - отмена отмены +U - восстановить строку к первоначальному виду +p - вставить после курсора +P - вставить до курсора +y - копировать (yw, y$, y0) +yy - копировать строку целиком (4yy - 4 строки) +. - повтор + +### Прокрутка экрана: +^F - вперед +^B - назад +^D - вперед на половину +^U - назад на половину +^E - вперед на строку +^Y - назад на строку + +### Положение экрана: +z Enter и z+Enter - прокрутить чтобы текущая строка оказалась в верхней части экрана +z. - прокрутить чтобы текущая строка оказалась в центре экрана +z- - прокрутить чтобы текущая строка оказалась в нижней части экрана + +^L - перерисовка экрана +H - первый символ начала верхней строки экрана +M - первый символ начала средней строки экрана +L - первый символ начала нижней строки экрана +nH - +nL - + + +f - поиск символа +r - замена символа под курсором +R - замена до нажатия ESC +/ - поиск слова вниз документа от текущего положения курсора +? - поиск слова вверх документа от текущего положения курсора +n - следующий в поиске +control + g - имя файла и в какой строке курсор +shift + g - перейти в конец файла +11 + shift + G - вернет к строке когда нажали control + g + +m x - закладка на строку с именем x +x - вернуться на строку с закладкой х + +v - режим выделения + стрелки +V - выделение всей строки +d - удалить выделение +dw - удалить слово +d$ - удалить до конца строки +D - удалить текст от курсора до конца строки +x - вырезать в буфер +yy - копировать в буфер ? +p - вставить из буфера справа от курсора +P - вставить из буфера слева от курсора +dw - удалить слово +dd - удалить строку +cc - удалить и начать редактирование +u - отменить действие (назад) +U - отменить во всей строке +2dd - удалить 2 строки + +cw - заменить слово +Cw - заменить текст до конца строки + +q1 - запись макроса (закончить запись = q) +@1 - выполнить макрос 1 +``` + |
