From e5abc1fe99340b979b18864d978179f71fe8f5c5 Mon Sep 17 00:00:00 2001 From: vlapa Date: Sat, 13 Jun 2026 20:33:26 +0300 Subject: First --- VIM.md | 479 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 479 insertions(+) create mode 100644 VIM.md (limited to 'VIM.md') diff --git a/VIM.md b/VIM.md new file mode 100644 index 0000000..c23931c --- /dev/null +++ b/VIM.md @@ -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 ://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                         вставить из буфера обмена +d                      удалить n+1 строку +y                      скопировать n+1 строку +ESC                       перейти в режим просмотра +DEL                       удалить следующий символ +:                      перейти на строку #n +%                         перейти к парной скобке +:e **/filename.c          редактировать файл (с поиском по имени) +:w [fname]                записать изменения +:wa                       сохранить изменения во всех файлах +:q                        выйти из редактора +:q!                       выйти из редактора, не сохраняя изменения +:color             выбор цветовой схемы. цветвые схемы: +                            /usr/local/share/vim/vim72/colors/*.vim +:pwd                      текущий каталог +:cd [path]                перейти в другой каталог +:!команда                 выполнить команду - man, git, и так далее +                            стрелочками веерх и вниз можно автодополнять +                            команды и искать по истории +CTR+p или CTR+n           автоматическое дополнение текста +                            (в режиме редактирования) +CTR+r,=,            вставить выражение, например 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                    предыдущий таб +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 +``` + -- cgit v1.2.3