Инструменты пользователя

Инструменты сайта


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\&ndash;\2/g Find all [number]-[number] text and replace with [number]&ndash;[number]
:%s/\v(\d+)-(\d+)+/\1\&ndash;\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.txt · Последнее изменение: 2015/12/24 00:00 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki