Linux vi/vim
Во всех Unix-подобных системах встроен текстовый редактор vi; других текстовых редакторов может не быть.
Однако в настоящее время мы чаще используем редактор vim.
vim обладает возможностью редактирования программ; он может активно использовать цвета шрифта для различения правильности синтаксиса, что удобно для проектирования программ.
Связанные статьи:Самая полная карта сочетаний клавиш Vim — от новичка до продвинутого
Что такое vim?
Vim — это текстовый редактор, разработанный на основе vi. Он обладает особенно богатыми возможностями, облегчающими программирование, такими как автодополнение кода, компиляция и переход к ошибкам, и широко используется среди программистов.
Проще говоря, vi — это старомодный текстовый процессор, но его функции уже довольно полны; всё ещё есть куда улучшаться. Можно сказать, что vim — очень полезный инструмент для разработчиков программ.
Даже официальный сайт vim (https://www.vim.org/) сам говорит, что vim — это инструмент разработки программ, а не программное обеспечение для обработки текстов.
карта клавиатуры vim
↑ Нажмите любую клавишу, чтобы просмотреть подробные описания и примеры использования
Использование vi/vim
В основном vi/vim делится на три режима:командный режим, режим вставки и режим командной строки.。
Командный режим
Как только пользователь запускает vi/vim, он переходит в командный режим.
В этом состоянии Vim распознает действия на клавиатуре как команды, а не как ввод символов. Например, если мы нажмемi, символ не введется;iэто будет воспринято как команда.
Ниже приведены несколько часто используемых команд в нормальном режиме:
- i-- Переключиться в режим вставки и начать ввод текста в текущей позиции курсора.
- x-- Удалить символ под текущим курсором.
- :-- Переключиться в режим командной строки, чтобы ввести команду в нижней строке.
- a: Вставить новую строку ниже текущей и войти в режим вставки.
- o-- Вставить новую строку выше текущей и войти в режим вставки.
- O-- Вырезать текущую строку.
- dd-- Скопировать текущую строку.
- yy(в нижнем регистре) -- Вставить содержимое буфера обмена под курсором.
- p(в верхнем регистре) -- Вставить содержимое буфера обмена над курсором.
- P-- Отменить последнюю операцию.
- u-- Повторить последнюю отменённую операцию.
- Ctrl + r-- Сохранить файл.
- :w-- Выйти из редактора Vim.
- :q-- Принудительно выйти из редактора Vim без сохранения изменений.
- :q!Если вы хотите редактировать текст, просто запустите Vim, войдите в командный режим и нажмите
чтобы переключиться в режим вставки.iКомандный режим содержит только некоторые из самых основных команд, поэтому вам всё ещё придётся полагаться на
режим командной строки, чтобы вводить больше команд.Режим вставки
Режим вставки
чтобы войти в режим вставки. Используйтеiклавишу, чтобы вернуться в обычный режим.EscВ режиме вставки можно использовать следующие клавиши:
Символьные клавиши и комбинации с Shift
- , ввод символов, клавиша Enter, перевод строки
- ENTER, клавиша Backspace, удаляет символ перед курсором
- BACK SPACE, клавиша Delete, удаляет символ после курсора
- DELКлавиши со стрелками
- , перемещать курсор по тексту, перемещать курсор в начало/конец строки
- HOME/END, страница вверх/вниз
- Page Up/Page Down, переключает курсор между режимом вставки/замены; курсор станет вертикальной линией/подчёркиванием
- Insert, выйти из режима вставки и переключиться в командный режим
- ESC命令行模式
命令行模式
(英文冒号)进入命令行模式。:在命令行模式中,您可以输入单字符或多字符命令;有许多可用命令。
在命令行模式中,基本命令如下(冒号已省略):
: 保存文件。
:w: 退出 Vim 编辑器。:q: 保存文件并退出 Vim 编辑器。:wq: 强制退出 Vim 编辑器,不保存更改。:q!该键可随时退出命令行模式。
按ESC简而言之,我们可以将这三个模式表示为下图:
vi/vim 使用示例
vi/vim 使用示例
使用 vi/vim 进入普通模式
Непосредственно введите
$ vim example.txt
vi filenameи вы войдете в обычный режим vi. Обратите внимание: после vi всегда нужно указывать имя файла, независимо от того, существует файл или нет!Нажмите i, чтобы войти в режим вставки (также называемый режимом редактирования) и начать редактирование текста.
Нажмите i, чтобы войти в режим вставки (также называемый режимом редактирования) и начать редактирование текста.
В режиме редактирования вы увидите, что в строке состояния в левом нижнем углу появляется текст –INSERT-; это подсказка, означающая, что можно вводить любые символы.
На этом этапе на клавиатуре, кроме
этой клавиши, все остальные клавиши можно рассматривать как обычные кнопки ввода, поэтому вы можете выполнять любое редактирование.EscНажмите клавишу ESC, чтобы вернуться в обычный режим.
Нажмите клавишу ESC, чтобы вернуться в обычный режим.
эту клавишу! Вы сразу увидите, что – INSERT – в левом нижнем углу экрана исчез!EscВ обычном режиме нажмите
В обычном режиме нажмите:wqСохранить и выйти из vi
и вы сможете сохранить и выйти!:wqОтлично! Таким образом, мы успешно создали файл example.txt.
Руководство по клавишам vi/vim
Руководство по клавишам vi/vim
Часть 1: Перемещение курсора, копирование и вставка, поиск и замена и т. д., доступные в обычном режиме
Часть 1: Перемещение курсора, копирование и вставка, поиск и замена и т. д., доступные в обычном режиме
| h или клавиша со стрелкой влево (←) | |
|---|---|
| Переместить курсор влево на один символ | j или клавиша со стрелкой вниз (↓) |
| Переместить курсор вниз на один символ | k или клавиша со стрелкой вверх (↑) |
| Переместить курсор вверх на один символ | l или клавиша со стрелкой вправо (→) |
| Переместить курсор вправо на один символ | Если положить правую руку на клавиатуру, вы обнаружите, что hjkl расположены рядом, поэтому эти четыре клавиши можно использовать для перемещения курсора. |
| Если вы хотите переместиться несколько раз, например, вниз на 30 строк, можно использовать сочетание клавиш "30j" или "30↓". То есть, после ввода нужного числа (number), нажмите действие! | |
| [Ctrl] + [f] | Переместить экран 'вниз' на одну страницу, эквивалентно клавише [Page Down] (часто используется) |
| [Ctrl] + [b] | Прокрутить экран «вверх» на одну страницу, эквивалентно клавише [Page Up] (часто) |
| [Ctrl] + [d] | Прокрутить экран «вниз» на половину страницы |
| [Ctrl] + [u] | Прокрутить экран «вверх» на половину страницы |
| + | Переместить курсор к первому непробельному символу следующей строки |
| - | Переместить курсор к первому непробельному символу предыдущей строки |
| n<space> | Это n означает «число», например 20. После ввода числа нажмите клавишу пробела, и курсор переместится на n символов вправо в этой строке. Например, 20<space> перемещает курсор на 20 символов вперёд. |
| 0 или функциональная клавиша [Home] | Это число «0»: перейти к самому первому символу этой строки (часто) |
| $ или функциональная клавиша [End] | Перейти к самому последнему символу этой строки (часто) |
| H | Переместить курсор к первому символу верхней строки на этом экране |
| M | Переместить курсор к первому символу средней строки на этом экране |
| L | Переместить курсор к первому символу нижней строки на этом экране |
| G | Перейти к последней строке этого файла (часто) |
| nG | n — это число. Перейти к строке n этого файла. Например, 20G перемещает к строке 20 этого файла (можно использовать с :set nu) |
| gg | Перейти к первой строке этого файла, эквивалентно 1G! (часто) |
| n<Enter> | n — это число. Переместить курсор вниз на n строк (часто) |
| Поиск и замена | |
| /word | Ищите вниз от курсора строку с именем word. Например, чтобы найти строку vbird в файле, просто введите /vbird! (часто используется) |
| ?word | Ищите вверх от курсора строку с именем word. |
| n | Эта n — английская клавиша. Она означает повторение предыдущего действия поиска. Например, если мы только что выполнили /vbird для поиска вниз строки vbird, то после нажатия n он продолжит поиск вниз следующей строки с именем vbird. Если мы выполнили ?vbird, то нажатие n продолжит поиск вверх строки vbird! |
| N | Эта N — английская клавиша. Она прямо противоположна n: выполняет предыдущее действие поиска в «обратном» направлении. Например, после /vbird нажатие N означает поиск «вверх» строки vbird. |
| Использование /word вместе с n и N очень полезно! Это позволяет многократно находить ключевые слова, которые вы ищете! | |
| :n1,n2s/word1/word2/g | n1 и n2 — числа. Между строками n1 и n2 найдите строку word1 и замените её на word2! Например, чтобы найти vbird между строками 100 и 200 и заменить его на VBIRD: ':100,200s/vbird/VBIRD/g'. (часто используется) |
| :1,$s/word1/word2/gили:%s/word1/word2/g | От первой строки до последней строки найдите строку word1 и замените её на word2! (часто используется) |
| :1,$s/word1/word2/gcили:%s/word1/word2/gc | От первой строки до последней строки найти строку word1 и заменить её на word2! Также перед заменой показать пользователю запрос на подтверждение, заменять ли! (часто) |
| Удаление, копирование и вставка | |
| x, X | В строке x удаляет один символ справа (эквивалентно клавише [del]), а X удаляет один символ слева (эквивалентно клавише [backspace], т. е. клавише backspace) (часто) |
| nx | n — это число. Удалить n символов подряд справа. Например, чтобы удалить 10 символов подряд, используйте '10x'. |
| dd | Вырезать всю строку, в которой находится курсор (часто); для вставки используйте p/P. |
| ndd | n — это число. Вырезать n строк вниз от курсора. Например, 20dd вырезает 20 строк (часто); используйте p/P для вставки. |
| d1G | Удалить все данные от курсора до первой строки |
| dG | Удалить все данные от курсора до последней строки |
| d$ | Удалить от позиции курсора до последнего символа строки |
| d0 | Это число 0. Удалить от позиции курсора до первого символа строки |
| yy | Скопировать строку, на которой находится курсор (часто используется) |
| nyy | n — это число. Скопировать n строк вниз от курсора. Например, 20yy копирует 20 строк (часто используется) |
| y1G | Скопировать все данные от строки курсора до первой строки |
| yG | Скопировать все данные от строки курсора до последней строки |
| y0 | Скопировать все данные от символа под курсором до начала строки |
| y$ | Скопировать все данные от символа под курсором до конца строки |
| p, P | p вставляет скопированные данные на строку ниже курсора, а P вставляет их на строку выше курсора! Например, если курсор сейчас находится на строке 20 и было скопировано 10 строк данных, то после нажатия p эти 10 строк будут вставлены после исходной строки 20, то есть начиная со строки 21. А если нажать P? Тогда исходная строка 20 сдвинется вниз и станет строкой 30. (часто используется) |
| J | Соединить строку, на которой находится курсор, с данными следующей строки в одну строку |
| c | Повторить удаление нескольких данных, например удалить 10 строк вниз, [10cj] |
| u | Отменить предыдущее действие. (часто используется) |
| [Ctrl]+r | Повторить предыдущее действие. (часто используется) |
| Клавиши u и [Ctrl]+r — очень распространённые команды! Одна — отмена, другая — повтор. С этими двумя функциональными клавишами ваше редактирование, хе-хе, будет довольно приятным! | |
| . | Не сомневайтесь! Это десятичная точка! Она означает повтор предыдущего действия. Если вы хотите повторить удаление, вставку и т. д., просто нажмите десятичную точку '.'! (часто используется) |
Часть 2: Описание клавиш, доступных для переключения из обычного режима в режим редактирования
| Войти в режим ввода или замены | |
|---|---|
| i, I | Войти в режим вставки: i означает "ввод с текущей позиции курсора", I означает "начать ввод с первого непробельного символа текущей строки". (часто используется)) |
| a, A | Войти в режим вставки: a означает "начать ввод со следующего символа после текущего курсора", A означает "начать ввод с последнего символа текущей строки". (часто используется)) |
| o, O | Войти в режим вставки: Это прописная и строчная формы английской буквы o. o открывает новую строку ниже текущей строки курсора; O открывает новую строку выше текущей строки курсора! (часто)) |
| r, R | Войти в режим замены: r заменяет один символ под курсором только один раз; R продолжает заменять текст под курсором, пока не нажата ESC; (часто)) |
| Среди перечисленных выше клавиш текст "--INSERT--" или "--REPLACE--" появится в левом нижнем углу экрана vi. По названию можно понять, какое это действие!! Особенно обратите внимание: как мы упоминали выше, когда вы хотите ввести символы в файл, вы должны увидеть INSERT или REPLACE в левом нижнем углу, прежде чем сможете вводить! | |
| [Esc] | Выйти из режима редактирования и вернуться в нормальный режим (часто)) |
Часть 3: Описание клавиш, доступных для переключения из нормального режима в режим командной строки
| Команды для сохранения, выхода и т. д. в режиме командной строки | |
|---|---|
| :w | Записать отредактированные данные в файл на жёстком диске (часто)) |
| :w! | Если атрибут файла — "read-only", принудительно записать в этот файл. Однако сможете ли вы на самом деле записать, по-прежнему зависит от ваших прав доступа к этому файлу! |
| :q | Выйти из vi (часто)) |
| :q! | Если вы изменили файл, но не хотите его сохранять, используйте ! для принудительного выхода без сохранения файла. |
| Обратите внимание, что восклицательный знак (!) в vi часто означает «принудительно». | |
| :wq | Сохранить и выйти; если указано :wq!, то принудительно сохраняет и выходит (часто)) |
| ZZ | Это заглавная Z! Если файл изменён, сохранить текущий файл, затем выйти! Это эквивалентно (сохранить и выйти). |
| ZQ | Не сохранять, принудительно выйти. Эквивалентно:q!。 |
| :w [filename] | Сохранить отредактированные данные в другой файл (аналогично «Сохранить как»). |
| :r [filename] | Во время редактирования прочитать данные другого файла. То есть добавить содержимое файла 'filename' после строки, где находится курсор. |
| :n1,n2 w [filename] | Сохранить содержимое с n1 по n2 в файл filename. |
| :! команда | Временно выйти из vi и выполнить команду, отобразив результат, в режиме командной строки! Например ':! ls /home' позволяет просмотреть информацию о файлах, выводимую ls в /home, внутри vi! |
| Изменение окружения vim | |
| :set nu | Отображать номера строк. После установки номер строки будет отображаться как префикс в каждой строке. |
| :set nonu | Противоположность set nu, отменяет нумерацию строк! |
Обратите особое внимание: в vi/vim числа имеют очень большое значение! Число обычно означает повторить что-то столько раз! Оно также может означать переход к какому-то «n-ному» объекту.
Например, чтобы удалить 50 строк, вы используете '50dd', верно! Число ставится перед действием. Например, если я хочу переместиться вниз на 20 строк, то '20j' или '20↓' подойдут.
Другие расширения