vim
Команды нормального режима (Редактирование)
Поиск…
Введение - Быстрая заметка о нормальном режиме
В нормальном режиме, команды могут быть введены с помощью прямых комбинаций клавиш (набрав U , чтобы отменить последнее изменение, к примеру). Эти команды часто имеют эквиваленты в режиме «ex», к которым можно получить доступ, набрав двоеточие :, которое бросает вас в однострочный буфер внизу окна Vim.
В режиме «ex» после ввода двоеточия вы вводите имя команды или ее аббревиатуру, а затем Enter, чтобы выполнить команду. Итак : undo
Enter выполняет то же самое, что и непосредственно вводить u в обычном режиме.
Вы можете видеть, что прямые команды часто бывают быстрее (после обучения), чем команды «ex» для простого редактирования, но для полноты, где это возможно, в следующей документации, если обе доступны для использования, оба они будут показаны.
Большинству этих команд также может предшествовать подсчет с помощью префикса или чередования ввода цифр 3dd в нормальном режиме, например, удаляет три строки (начиная с текущей позиции курсора).
Базовое отменить и повторить
расстегивать
команда | : | Описание |
---|---|---|
U | u , undo | Отменить последнее изменение |
5U | Отмените пять последних изменений (используйте любое число) |
Помните, что в Vim «последнее изменение» изменяется в соответствии с режимом, в котором вы находитесь. Если вы войдете в режим ввода ( i ) и напечатаете полный абзац перед тем, как вернуться в обычный режим ( Esc ), весь этот абзац считается самым последним изменением.
переделывать
команда | : | Описание |
---|---|---|
Ctrl-R , | red , redo | Повторить последнее отмененное изменение |
2Ctrl-R , | Повторите два последних отмененных изменения (используйте любое число) |
Есть еще один способ отменить и изменить изменения в Vim, которые обрабатываются несколько иначе. Когда вы отменяете изменения с помощью u , вы выполняете резервное копирование узлов на «дереве» ваших изменений, а нажатие Ctrl-R подходит по этим узлам по порядку. (Дерево отмены является отдельной темой и слишком сложно охватить здесь.)
Вы также можете использовать U (то есть, в верхнем регистре), чтобы удалить все последние изменения в одной строке (строка, в которой были сделаны ваши последние изменения). Это не пересекает узлы дерева так же, как и . Использование U действительно считается как само изменение - другой узел вперед по дереву - так что если вы нажмете U второй раз сразу после первого, он будет действовать как команда Redo.
Каждый из них имеет свои применения, но u / : undo
должен охватывать самые простые случаи.
Повторить последнее изменение
Команда Repeat, выполняемая с помощью клавиши точки или периода ( . ), Более полезна, чем она появляется впервые. Узнав, вы часто будете его использовать.
команда | : | Описание |
---|---|---|
, | Повторите последнее изменение | |
10. | Повторите последнее изменение 10 раз |
Итак, для очень простого примера, если вы вносите изменения в строку 1, набрав i I
Esc, со следующим результатом:
1 I made a mistake
2 made a mistake
3 made a mistake
Ваш курсор будет в позиции 1 строки 1, и все, что вам нужно сделать, чтобы исправить следующие две строки, - нажмите j. дважды, т. е. j для перемещения по строке и . чтобы повторить последнее изменение, которое было добавлением I
Не нужно возвращаться в режим вставки дважды, чтобы исправить эти строки.
Он становится намного более мощным, когда используется для повторения макросов .
Копирование, вырезание и вставка
В Vim эти операции обрабатываются иначе, чем вы могли бы использовать практически в любом другом современном редакторе или текстовом редакторе ( Ctrl-C , Ctrl-X , Ctrl-V ). Чтобы понять, вам нужно немного узнать о регистрах и движениях.
Примечание: в этом разделе не будет отображаться копирование и резка визуального режима или вытягивание диапазона, поскольку они выходят за рамки как нормального режима, так и основного редактирования.
Регистры
Vim использует концепцию регистров для обработки движущегося текста внутри самой программы. Для этой цели Windows имеет один буфер обмена, который аналогичен одному регистру в Vim. При копировании, разрезании и вставке в Vim существуют способы использовать аналогично простой рабочий процесс редактирования (где вам не нужно думать о регистрах), но есть и гораздо более сложные возможности.
Регистр предназначен для ввода / вывода команды путем префикса команды с « и строчным буквенным именем».
Ходатайства
Движение в Vim - это любая команда, которая перемещает позицию курсора в другом месте. При копировании, обрезке и вставке в нормальный режим возможности выбора текста для движения ограничены только вашими знаниями движений. Ниже приведены некоторые из них.
Копирование и резка
Основные операции копирования и вырезания команд основаны на y ('yank', для копирования) и d ('delete', для cut). Вы увидите сходство в следующей таблице.
команда | : | Описание |
---|---|---|
у {перемещение} | Копировать ('yank') текст, обозначенный движением, в регистр по умолчанию | |
уу | Скопируйте текущую строку в регистр по умолчанию, linewise | |
Y | Скопируйте текущую строку в регистр по умолчанию (синоним для yy ) | |
«ayiw | Скопируйте слово, в котором находится курсор, в регистр 'a' | |
20" BYY | Скопируйте двадцать строк, начиная с курсора, в регистр 'b' | |
d {перемещение} | Вырезать («удалить») текст, обозначенный движением, в регистр по умолчанию | |
дд | Вырезать текущую строку в регистр по умолчанию, linewise | |
D | Вырезать из курсора в конец строки в регистр по умолчанию (НЕ синоним для dd ) | |
«adiw | Вырезать слово, в котором находится курсор, в регистр 'a' | |
20" БДД | Вырезать двадцать строк, начиная с курсора, в регистр 'b' |
Примечание: если что - то копируется или вырезать построчно, поведение пасты показана ниже поместит текст до или после текущей строки (а не курсор). Ниже приводятся примеры, поясняющие.
склеивание
Существует несколько способов вставки в Vim, в зависимости от того, что вы пытаетесь выполнить.
команда | : | Описание |
---|---|---|
п | Вставить все, что находится в регистре по умолчанию после курсора | |
п | Вставить все, что находится в регистре по умолчанию перед курсором | |
«ар | Вставить содержимое регистра 'a' после курсора | |
«сП | Вставьте содержимое регистра 'c' перед курсором |
Итак, как мне выполнить действительно простую вырезку и вставку?
Если у меня есть следующий текст:
1 This line should be second
2 This line should be first
Я могу сделать простейший cut-and-paste, поместив мой курсор где-нибудь в строке 1 и набрав ddp . Вот результаты:
1 This line should be first
2 This line should be second
Что случилось? dd «Вырезает» первую строку (linewise) в регистр по умолчанию, который будет содержать только одну вещь за раз, например, буфер обмена Windows, и p вставляет строку после текущей, которая только что изменилась из-за команды dd .
Вот не совсем простой пример. Мне нужно переместить пару слов. (Это надуманное и ненужное, но вы можете применить этот принцип к более крупным кускам кода.)
1 These words order out are of
Я могу повторить w, чтобы добраться до «o» в начале «порядка» (или b, если я просто набрал его и понял свою ошибку).
Затем «нужно поставить« заказ »в регистр« a ».
Тогда w, чтобы добраться до 'a' in 'are'.
После этого я набрал бы «bdaw, чтобы положить« есть »в регистр« b ». Теперь у меня это отображается:
1 These words out of
Чтобы быть ясным, теперь «порядок» находится в регистре «a» и «are» находится в регистре «b», как два отдельных буфера обмена.
Чтобы правильно расположить слова, я набираю b, чтобы перейти к 'o' in 'out', а затем "bP to put" are 'из регистра' b 'перед' out ':
1 These words are out of
Теперь я печатаю A, чтобы добраться до конца строки, а затем Space Esc (если не было места после «of») и «ap поставить« порядок », где он принадлежит.
1 These words are out of order
завершение
Завершение может использоваться для сопоставления слов, используемых в документе. При вводе слова, Ctrl р или Ctrl п будет соответствовать предыдущим или следующим подобным словам в документе.
Это можно даже комбинировать с режимом Ctrl-X для завершения целых строк. Например, введите что-то вроде:
This is an example sentence.
затем перейдите к следующей строке и начните вводить одно и то же предложение:
Thi
а затем нажмите Ctrl p, что приведет к:
This
Теперь, находясь в режиме вставки, нажмите Ctrl x Ctrl p, а затем следующее слово будет завершено, что приведет к:
This is
Продолжайте нажимать Ctrl x Ctrl p до завершения всей строки.
Если вы знаете, что хотите завершить весь тип линии, выполните следующие действия:
This is an example sentence.
затем на следующей строке:
Thi
и нажмите x Ctrl l, чтобы завершить линию.
Если завершение выполняется, это имя файла Ctrl x Ctrl f может быть использовано для завершения этого каталога. Тип:
~/Deskt
затем нажмите Ctrl x Ctrl f и:
~/Desktop
(если в этом месте). Затем Ctrl x Ctrl f можно повторно использовать для отображения файлов на рабочем столе.