Поиск…


Введение - Быстрая заметка о нормальном режиме

В нормальном режиме, команды могут быть введены с помощью прямых комбинаций клавиш (набрав 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 можно повторно использовать для отображения файлов на рабочем столе.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow