vim
Это старая версия документа!
Содержание
Vim
Отличия от Vi
В сравнении с классическим vi Vim отличается следующими улучшениями:
- Работа со многими файлами одновременно. Разбиение окон редактирования может производиться многократно как по горизонтали, так и по вертикали.
- Поддержка Unicode.
- Поддержка визуального режима, который позволяет, например, выполнять операции над блоками текста.
- Неограниченная глубина отмены (undo) и возврата (redo) действий.
- Режим сравнения двух файлов, перенос отдельных изменений из одного файла в другой.
- Широкая файловая поддержка (файл со справкой и более 200 файлов с описанием синтаксиса).
- Подсветка синтаксиса, автоматическое определение величины отступа для каждой строки в зависимости от языка программирования (изначально поддерживает более 200 языков программирования и форматов конфигурационных файлов).
- Интеграция с операционной системой, дающая возможности, близкие к интегрированным средам разработки, такие как поиск ошибки по сообщению компилятора, автодополнение идентификаторов и др.
- Поддержка языка сценариев; возможность написания модулей расширения — плагинов.
- Автоматическое продолжение команд, слов, строк целиком и имён файлов.
- Автоматический вызов внешних команд (например, автоматическая распаковка файла перед редактированием).
- Распознавание и преобразование файлов различных форматов.
- Удобный механизм истории команд, поисковых слов и т. д.
- Запись и исполнение макросов.
- Возможность сохранения настроек и сеанса.
- Возможна интеграция с языками программирования Perl, Tcl, Python и Ruby.
- Поддержка языков с письмом справа налево (арабских и других).
- Сворачивание (folding) текста для лучшего обзора.
- Возможно использование графического интерфейса в специальных версиях (GTK, Motif, …).
- Хорошо конфигурируется и настраивается под нужды пользователя.
- Для программистов: поддержка цикла разработки «редактирование — компиляция — исправление» программ. Автоматическое выполнение сборки/компиляции, обнаружение и распознавание ошибок, переход к строкам ошибок в тексте программы.
- Для поклонников vi: практически стопроцентная совместимость с vi.
Горячие клавиши
| Помощь | |
|---|---|
| :help | Вывести краткую справку и завершить работу. То же, что и «-h». |
| :help j | Вывести справку по команде 'j'. |
| :help :split | Вывести справку по команде ':split'. |
| :help z* | Вывести справку по всем командам, начинающимся с 'z'. |
| <C-]> | Перейти к тэгу под курсором. |
| <C-o> | Перейти на предыдущую страницу справки. |
| <C-i> | Перейти на следующую страницу справки. |
| Отмена и повтор операции | |
| u | Отменить действие. |
| <C-r> | Восстановить отменённое действие / повторить последнюю команду редактирования. |
| :redo | Восстановить отменённое действие / повторить последнюю команду редактирования. |
| Перемещение между строками | |
| 0 | Перейти в начало текущей строки. |
| ^ | Перейти к первому непробульному символу в текущей строке. |
| $ | Перейти в конец текущей строки. |
| gg | Перейти на первую строку в файле. |
| G | Перейти на последнюю строку в файле. |
| 47G | Перейти на строку 47. |
| :47 | Перейти на строку 47 (альтернативный способ). |
| Перемещение между символами | |
| f [char] | Поиск вперёд в строке символа [char] и установка курсора на него. |
| 3f [char] | Поиск вперёд в строке третий символ [char] и установка курсора на него. |
| F [char] | Поиск назад в строке символа [char] и установка курсора на него. |
| t [char] | Поиск вперёд в строке символа [char] и установка курсора после него. |
| T [char | Поиск назад в строке символа [char] и установка курсора после него. |
| ; | Повтор поиска вперёд символа, найденного при помощи f/t/F/T. |
| , | Повтор поиска назад символа, найденного при помощи f/t/F/T. |
| Перемещение между словами и навигация в тексте | |
| w | Перейти к началу следующего слова. |
| W | Перейти к началу следующего слова, отделённого пробельными символами с двух сторон. |
| e | Перейти к концу ближайшего слова. |
| E | Перейти к концу ближайшего слова, отделённого пробельными символами с двух сторон. |
| b | Перейти к началу предыдущего слова. |
| B | Перейти к началу предыдущего слова, отделённого пробельными символами с двух сторон. |
| ( | Перейти на первую точку слева от курсора (если она есть, в противном случае на начало абзаца). |
| ) | Перейти на первую точку справа от курсора (если она есть, в противном случае на конец абзаца). |
| { | Перейти на абзац назад до пустой строки. |
| } | Перейти на абзац вперёд до пустой строки. |
| Перемещение по программному коду | |
| % | Перемещение между открытием / закрытием парных скобками: (),[] или {}. |
| [[ | Перейти к предыдущей функции. |
| ]] | Перейти к следующей функции. |
| [{ | Перейти к началу текущего блока кода. |
| ]} | Перейти в конец текущего блока кода. |
| Поиск | |
| / | Поиск. |
| ? | Поиск в обратном направлении. |
| n | Перейти к следующему совпадению. |
| N | Повторить поиск назад. |
| * | Перейти к следующему вхождению слова под курсором. |
| # | Перейти к предыдущему вхождению слова под курсором. |
| Повторения | |
| . | Повторить последнюю команду. |
| 23dd | Удалить (вырезать) 23 строки. |
| 5j | Перейти на 5 строк вверх. |
| qa | Начать запись комбинации клавиш, которая будет назначена за клавишей 'a'. |
| q | Закончить запись. |
| @a | Выполнить макрос записанный под именем 'a'. |
| 4@a | Выполнить макрос записанный под именем 'a' 4 раза. |
| Замена текста | |
| :%s/search/replace/g | Заменить все вхождения 'search' на 'replace. |
| :%s/old/new/gw | Заменить все вхождения “old” на “new” с запросом подтверждения. |
| :5,10s/search/replace/g | Заменить все вхождения 'search' на 'replace' с 5 по 10 строку. |
| :5,$s/search/replace/g | Заменить все вхождения 'search' на 'replace' начиная с 5 строки и до конца файла. |
| :%s/\(\d\+\)-\(\d\+\)\+/\1\–\2/g | Find all [number]-[number] text and replace with [number]–[number] |
| :%s/\v(\d+)-(\d+)+/\1\–\2/g | Same as last, but using magic regex. |
| :g/foo/ s/bar/BAR/g | On lines that match the regex /foo/, replace 'bar' with 'BAR'. |
| :vimgrep /^<h5/ *.html | Find lines that start with '<h5' in all HTML files in the current directory. Matches show up in the quickfix list. |
| :%s/^/hello/g | Добавить “hello” в начало каждой строки. |
| :%s/$/Harry/g | Добавить “Harry” в конец каждой строки. |
| :%s/onward/forward/gi | Заменить “onward” на “forward” с учетом регистра. |
| :%s/ *$//g | Убрать все пробелы. |
| :g/string/d | Удалить все строки, содержащие “string”. |
| :v/string/d | Удалить все строки, не содержащие “string”. |
| :s/Bill/Steve/ | Заменить первое вхождение “Bill” на “Steve” в текущей строке. |
| :s/Bill/Steve/g | Заменить все вхождения “Bill” на “Steve” в текущей строке. |
| :%s/\r//g | Убрать символ возврата каретки (Такие тексты обычно приходят от windows-пользователей). |
| :%s#>[^<]\+>##g | Очистить текст от HTML-тегов. |
| :%s/^\(.*\)\n\1$/\1/ | Удалить строки, повторяющиеся дважды. |
| Ctrl+a | Увеличить число под курсором на единицу. |
| Ctrl+x | Уменьшить число под курсором на единицу. |
| ggVGg? | Преобразовать текст в Rot13. |
| :cn | Move to next entry in the quickfix list. |
| :cp | Move to previous entry in the quickfix list. |
| Вставка | |
| i | Перейти в режим вставки в текущем положении курсора. |
| I | Переместить курсор в начало строки и перейти в режим вставки. |
| a | Переместить курсор вправо на один символ и включить режим вставки. |
| A | Переместить курсор в конец строки и включить режим вставки. |
| o | Добавить пустую строку после текущей. |
| O | Добавить строку перед текущей. |
| Удаление текста | |
| x | Удалить (вырезать) символ после курсора. |
| dw | Удалить (вырезать) текущее слово. |
| dd | Удалить (вырезать) текущую строку. |
| d^ | Удалить все символы от текущей позиции до начала строки |
| D | Удалить (вырезать) начиная с положения курсора и до конца строки. |
| d$ | |
| dt [char] | Удалить (вырезать) начиная с положения курсора и до первого вхождения символа [char]. |
| df[char] | |
| d) | Удалить (вырезать) начиная с положения курсора и до конца предложения. |
| d} | Удалить (вырезать) начиная с положения курсора и до конца адзаца. |
| di( | Удалить (вырезать) текст внутри скобок. |
| da< | Удалить (вырезать) скобки <> вокруг. |
| dit | Удалить (вырезать) текст между открывающим и закрывающим тегами. |
Источники
vim.1450977903.txt.gz · Последнее изменение: 2015/12/24 00:00 (внешнее изменение)

