5

Скажи у меня есть следующее

printf(text goes here);

и я выбираю "текст идет здесь" в визуальном режиме ...
Как я могу быстро изменить его на

printf("text goes here");

5 ответов5

9

Вы должны исследовать больше. Какие команды Vim можно использовать для кавычек / кавычек?

Цитирование:

Surround.vim будет вашим самым простым ответом. Если вы действительно настроены против его использования, вот несколько примеров того, что вы можете сделать. Не обязательно самый эффективный, но именно поэтому был написан surround.vim.

  • Процитируй слово, используя одинарные кавычки ciw'Ctrl+r"'
    • ciw - удалить слово, на котором находится курсор, и перейти в режим вставки.
    • ' - добавить первую цитату.
    • Ctrl+r" - Вставить содержимое " регистра, иначе последний янк / удалить ".
    • ' - добавить заключительную цитату.

  • Укажи на кавычки слово, заключенное в одинарные кавычки di'hPl2x
    • di' - удалить слово, заключенное в одинарные кавычки.
    • hP - переместите курсор влево на одно место (поверх открывающей цитаты) и поместите только что удаленный текст перед цитатой.
    • l - Переместить курсор вправо на одно место (поверх вводной кавычки).
    • 2x - Удалить две кавычки.

  • Измените одинарные кавычки на двойные кавычки va':s/\%V'\%V/"/g
    • va' - визуально выбрать цитируемое слово и кавычки.
    • :s/ - начать замену.
    • \%V'\%V - сопоставлять только одинарные кавычки, которые находятся внутри визуально выбранного региона.
    • /"/g - Заменить их все двойными кавычками.
5

Это предназначено для ответа на конкретный вопрос, который вы задали. Вы заявляете, что визуально выбрали какой-то текст и хотите заключить его в кавычки. Для этого запустите:

:s/\%V\(.*\)\%V/"\1"/

Чтобы разбить это на части:

  • : позволяет вводить команды ex .

  • s/old/new/ - это обычная команда замены.

  • \%V - недокументированный атом, чтобы отметить начало выделенного текста

  • \(.*\) выделяет все и сохраняет его в выделении 1.

  • Второй \%V обозначает конец выделенного текста.

  • Заменяющий текст - это каждый выбранный текст, который хранится в \1 заключен в кавычки: "\1" .

Эта команда применяет построчно. Таким образом, вы можете получить нежелательные результаты, если выделенный текст занимает несколько строк.

4

Последовательность команд cw""<ESC>P является близкой вещью, которая может сделать окружение текста и работает, сокращая слово (строка буквенно-цифровых символов: az, AZ, 0-9, включая _ [подчеркивание]), затем вставляет текст "" и, нажимая клавишу escape (<ESC> чтобы выйти из режима вставки, можно вставить перед курсором). Таким образом, команда разбивается на:

c - нарезать в регистр

w - регулярное выражение \w

"" - вставьте два " символа в текущей позиции курсора

<ESC> - Сокращение VIM для нажатия клавиши ESC . В этом контексте вернитесь в командный режим.

P - вставить текущий регистр

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

:s/\(\w\+\)/"\1"/g

Эта команда сохраняет полученное в результате соответствующее регулярное выражение, захваченное как группа '1', и замену преформы, чтобы вставить содержимое группы в ваши кавычки. Таким образом, с учетом текста:

fubar: 1

становится:

"fubar": 1

Вступительный файл справки vim является одним из лучших ресурсов для всех, наряду с командой :help .

1

Вот как я процитировал несколько моих визуальных выборов:

  1. В режиме VISUAL выберите текст, который нужно процитировать, затем нажмите qqc""<Esc>Pq

    • qq начинает записывать ваши действия в запись q
    • c помещает выделенный текст в регистр и переключается в режим INPUT
    • "" ставит символы, которые необходимо заключить в текст
    • <Esc> переключается в НОРМАЛЬНЫЙ режим
    • P помещает текст из регистра в позицию курсора, между кавычками
    • q обозначает конец записи действий
  2. Теперь, в том же сеансе, вы сможете заключить в кавычки любой визуальный блок, просто набрав @q , который воспроизводит наши ранее записанные действия

  3. ???

  4. После использования @q один раз вы сможете ввести @@ (повторить предыдущее действие), чтобы процитировать последующие визуальные выделения

1

Не используйте визуальный режим. Просто измените текст в скобках на «», а затем вставьте удаленный текст между ними. ci)"" <Esc> P

Если вы хотите использовать визуальный режим, он работает так же, вы просто опускаете часть 'i)': c "" <Esc> P

(<Esc> означает удар по клавише escape)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .