English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linux справочник
Все Unix-подобные системы имеют встроенный редактор vi, другие текстовые редакторы могут не быть обязательными.
Но в настоящее время мы используем больше vim редактора.
Vim имеет функцию программного редактирования и может активно отличать правильность синтаксиса цветом шрифта, что удобно для программирования.Соответствующие статьи:
Что такое vim?
Vim - это текстовый редактор, который развился из vi. У него есть множество удобных функций для программирования, таких как автозаполнение кода, компиляция и переход к ошибкам, и он широко используется программистами.
Просто говоря, vi - это старый текстовый процессор, но функции уже очень полные, но все еще есть места для улучшения. Vim можно сказать, что это очень полезный инструмент для разработчиков.http://www.vim.org) Сам vim также говорит, что это программа для разработки, а не текстовый процессор.
Схема клавиатуры Vim:
В принципе, vi/vim делятся на три режима,分别是Режим команд (Command mode),Режим ввода (Insert mode)иРежим нижней строки (Last line mode). Эти три режима выполняют следующие функции:
Пользователь только что запустил vi/vim и сразу перешел в режим команд.
В этом состоянии действия на клавиатуре будут распознаваться Vim как команды, а не как ввод символов. Например, если мы нажмем 'i', символ не будет введен, 'i' будет распознан как команда.
Вот несколько常用的 команд:
i Перейдите в режим ввода, чтобы ввести символ.
x Удаление символа в当前位置 курсора
: Перейдите в режим нижней строки, чтобы ввести команду в нижней строке.
Если нужно редактировать текст: запустите Vim, перейдите в режим команд, нажмите 'i', чтобы перейти в режим ввода.
Режим команд имеет только несколько最基本的 команд, поэтому для ввода более сложных команд все еще нужно использовать режим нижней строки.
В режиме команд pressing 'i' переходит в режим ввода.
В режиме ввода можно использовать следующие клавиши:
Клавиши символов и комбинации с ShiftВвод символа
ENTERВвод строки, переброс на новую строку
BACK SPACEУдаление символа, удаление предыдущего символа перед курсором
DELУдаление символа, удаление следующего символа после курсора
Клавиши направленияПеремещение курсора в тексте
HOME/ENDПеремещение курсора в начало/конец строки
Page Up/Page DownПерелистывание страниц
Вставкапереключить курсор в режим ввода/замены, курсор станет вертикальной линией/подчеркиванием
ESCвыйти из режима ввода, перейти в режим командной строки
Нажмите: (английская запятая) для входа в режим командной строки.
Режим командной строки позволяет вводить один или несколько символов команд, и доступно множество команд.
В режиме командной строки основные команды имеют (с пробелом):
q выйдет из программы
w сохраняет файл
Нажмите клавишу ESC, чтобы随时 выйти из режима командной строки.
Коротко говоря, мы можем представить эти три режима как иконки внизу:
Если вы хотите использовать vi для создания файла с именем w3codebox.txt, вы можете сделать это так:
$ vim w3codebox.txt
Прямо введите Имя файла vi Таким образом, вы можете перейти в общий режим vi. Пожалуйста, обратите внимание, что после vi一定要加文件名, независимо от того, существует ли этот файл или нет!
В общем режиме, просто нажмите i, o, a и т.д., чтобы перейти в режим ввода!
Во время редактирования вы можете увидеть, что в левом нижнем углу панели состояния中出现 –INSERT- это提示, что можно вводить любые символы.
В этот момент, на клавиатуре кроме Esc Кроме этой кнопки, все другие клавиши можно рассматривать как обычные кнопки ввода, поэтому вы можете выполнять любое редактирование.
Хорошо, предположим, что я уже редактировал его по этому образцу, так как я должен выйти? Да! Да! Это просто нажать Esc Эта кнопка! Вскоре вы обнаружите, что в левом нижнем углу экрана исчезло – INSERT –!
OK, мы собираемся сохранять, просто сохраните и покиньте, команда очень проста, введите :wq Сохраните и покиньте!
OK! Таким образом, мы успешно создали файл w3codebox.txt.
Кроме того, i, Esc, :wq в простых примерах, на самом деле vim имеет очень много клавиш, которые можно использовать.
Способы перемещения курсора | |
---|---|
h или клавиша стрелки влево (←) | Курсор смещается на один символ влево |
j или клавиша стрелки вниз (↓) | Курсор смещается на один символ вниз |
k или клавиша стрелки вверх (↑) | Курсор смещается на один символ вверх |
l или клавиша стрелки вправо (→) | Курсор смещается на один символ вправо |
Если вы положите правую руку на клавиатуру, вы обнаружите, что hjkl расположены рядом, поэтому можно использовать эти четыре кнопки для перемещения курсора. Если нужно выполнить несколько перемещений, например, переместить вниз на 30 строк, можно использовать комбинацию клавиш «30j» или «30↓». То есть, добавьте количество повторений (число) и нажмите действие! | |
[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 — цифра. Перемещается к nth строке файла. Например, 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 являются числами. Искать word1 строку между n1 и n2 строками, и заменить эту строку на
word2 ! Например, если искать vbird и заменить на VBIRD в строках с 100 до 200, то: 『: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], то есть клавише обратного удаления) (часто используемый) |
nx | n является числом, удаляет向后 n символов. Например, если нужно удалить 10 символов, 『10x』 |
dd | Удаляет целую строку под курсором (часто используемый) |
ndd | n является числом. Удаляет向下 n строк, например, 20dd удаляет 20 строк (часто используемый) |
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 очень часто используются! Одна для восстановления, другая для повторения. Используя эти две функциональные клавиши, ваше редактирование,嘿嘿!очень весело! | |
. | Не怀疑!Это точка! Это означает повторение предыдущего действия. Если вы хотите повторить удаление, повторное粘贴 и т.д., просто нажмите точку «.».! (часто используемый) |
Войти в режим ввода или замены | |
---|---|
i, I | Войти в режим ввода (Insert mode): i — начать ввод в当前位置, I — начать ввод с первого не пробельного символа в текущей строке. (часто используемый) |
a, A | Войти в режим ввода (Insert mode): a — начать ввод с следующего символа курсора, A Это означает «ввести с конца текущей строки» (обычно) |
o, O | Войти в режим ввода (Insert mode): Это大小写英文字母 o. o — ввести новую строку под текущим курсором; O — ввести новую строку в верхнем регистре на месте текущего курсора (обычно) |
r, R | Войти в режим замены (Replace mode): r заменит один символ под курсором один раз; R будет заменять текст под курсором до тех пор, пока не будет нажата До Esc; (обычно) |
На этих клавишах, в левом нижнем углу экрана vi会出现「--INSERT--」или「--REPLACE--」. По названию понятно, что это за действие!! особенно важно помнить, что мы уже упоминали, что если вы хотите вводить символы в файле: Должно быть видимо INSERT или REPLACE в левом нижнем углу, чтобы можно было вводить данные! | |
[Esc] | Выйти из режима редактирования и вернуться в обычный режим (обычно) |
Инструкции по сохранению и выходу из режима командной строки | |
---|---|
:w | Записать измененные данные на жесткий диск (обычно) |
:w! | Если файл имеет атрибут «только чтение», принудительно写入 файл. Но能不能写入, это уже другой вопрос. Это все же связано с правами доступа к файлу! |
:q | Выход из vi (обычно) |
:q! | Если вы изменяли файл, но не хотите сохранять изменения, используйте ! для принудительного выхода без сохранения. |
Внимание, что точка exclamatio (!) в vi часто имеет значение «принудительное». | |
:wq | Сохранить и выйти, если :wq! то это будет强制ное сохранение и выход (часто используемый) |
ZZ | Это большая буква Z! Если вы внесли изменения, сохраните текущий файл и затем выйдите! Эффект равен (сохранить и выйти) |
ZQ | Не сохранять и强制 выйти. Эффект равен :q! |
:w [filename] | Сохранить редактируемое содержимое в другой файл (аналог сохранения в новый файл) |
:r [filename] | Включить данные другого файла в данные, которые редактируются. Иначе говоря, включить『filename』 Добавить содержимое этого файла в строку, на которой находится курсор |
:n1,n2 w [filename] | Сохранить содержимое с n1 по n2 в файл filename. |
:! command | Временное离开 vi в режиме командной строки для выполнения результатов команды display! Например 『:! ls /home』позволяет увидеть информацию о файлах, выводимых командой ls в каталоге /home, в vi! |
Изменение среды vim | |
:set nu | Отображение номеров строк, после установки, номер строки будет отображаться перед каждой строкой |
:set nonu | Напротив set nu, чтобы отменить отображение номеров строк! |
Особое внимание, в vi/vim числа имеют важное значение! Числа обычно означают повторение действия несколько раз! Или возможно, они указывают на номер某种 чего-то.
Например, чтобы удалить 50 строк, используется『50dd』, верно? Номер ставится перед действием, например, если я хочу перейти向下 на 20 строк, то это『20j』или『20↓』.