====== Vim ====== {{ ::vim_1.png?600 |}} ---- ===== Отличия от 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'. | | **%%%%** | Перейти к тэгу под курсором. | | **%%%%** | Перейти на предыдущую страницу справки. | | **%%%%** | Перейти на следующую страницу справки.| ^ Отмена и повтор операции ^^ | **%%u%%** | Отменить действие. | | **%%%%** | Восстановить отменённое действие / повторить последнюю команду редактирования. | | **%%: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 /^
** | Find lines that start with '%%:%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%%** | Удалить (вырезать) текст между открывающим и закрывающим тегами. | Не завершено! ---- ===== Источники ===== * [[http://bencrowder.net/files/vim-fu/|Basic Vim Tips]]