Подтвердить что ты не робот

Vim: как сделать текст, который я только что напечатал в верхнем регистре?

Случай использования: я только что ввел режим вставки и набрал текст. Теперь я хочу сделать это заглавными.

Это можно сделать с помощью g U motion. Однако я не могу найти движение над текстом, введенным в недавнем сеансе ввода. Это несколько странно, и понятие такого движения затруднено (куда двигаться, если вы удалили текст, например?), Но это может решить мою проблему.

Или есть ли другие способы сделать в верхнем регистре текст, который вы недавно ввели?

4b9b3361

Ответ 1

Движение, которое вы ищете, это:

`[

(backtick, open-square-bracket). Чтобы сделать простое движение, вы должны использовать:

gU`[

Однако вы обнаружите, что последний символ, вероятно, не будет включен из-за того, как работает движение (я мог ошибаться). Тогда простое решение:

v`[U

То есть "перейдите в визуальный режим, выберите из текущей позиции в начало последнего измененного текста, сделайте его верхним регистром". Для получения дополнительной информации см.:

:help '[
:help mark-motions

Обратите внимание на разницу в :help mark-motions между обратным ходом и одной кавычкой.

Ответ 2

Введите слово в нижнем регистре в ВИМ.

Затем нажмите клавишу Esc.

Затем переместите курсор в начало характер введенных слов.

Затем нажмите клавишу ~.

Он заменит нижний регистр на верхний регистр.

Если ввод является верхним регистром, он будет замените нижний регистр.

Ответ 3

Вы также можете использовать движение "внутреннего слова" вместе с gU

Итак, после ввода слова нажмите <Esc>, а ввод gUiw должен работать, не переключаясь в визуальный режим.

Ответ 4

Я просто выбираю текст в визуальном режиме и использую ~, чтобы изменить регистр, U в верхний регистр или u, чтобы сделать строчный текст выбранного текста.

Изменить: см. комментарии ниже.