Как я могу быстро цитировать / отменять кавычки и изменять цитаты (например, с '
на "
) в Vim? Я знаю о плагине Surround.vim , но я хотел бы использовать только Vim.
204
Как я могу быстро цитировать / отменять кавычки и изменять цитаты (например, с '
на "
) в Vim? Я знаю о плагине Surround.vim , но я хотел бы использовать только 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
- Замените их все в двойных кавычках.источник
ciw
и не простоcw
? Первый путает, второй работает нормально.ciw
работает независимо от того, где находится ваш курсор в слове.cw
работает только если курсор находится в начале слова. См:help iw
..
командой. Чтобы заставить это работать, используйтеciw' Ctrl+r Ctrl+p"
. Тогда он.
будет вести себя так, как вы хотите, для следующего слова: вместо запоминания содержимого регистра, он будет помнить, что вы хотите, чтобы все, что есть в реестре прямо сейчас (довольно сложно объяснить, но если вы попробуете оба, это станет очевидным :-))Мне было проще сделать это таким образом
источник
Вот несколько карт, которые могут помочь:
Если вы не изменили переменную mapleader, активируйте отображение с помощью
\q"
\q'
или\qd
. Они добавляют двойные кавычки вокруг слова под курсором, одинарные кавычки вокруг слова под курсором, удаляют любые кавычки вокруг слова под курсором соответственно.источник
map <Leader>' gewi'<Esc>A'<Esc>
в свой.vimrc
файл, чтобы вставить одинарные кавычки из текущей позиции в конец строки; который помог мне при конвертации некоторых скриптов MSDOS в bash.:vnoremap <leader>q c""<esc>P
.В дополнение к другим командам все слова в строке будут заключены в двойные кавычки (согласно вашему комментарию)
или если вы хотите уменьшить количество обратных слешей, вы можете поместить
\v
(очень магический) модификатор в начале паттернаисточник
:s/\v([a-Z]+)/"\1"/g
Макро способы!
нажмите qи qдля записи в регистр q (мы используем «q» в качестве ярлыка для запоминания «кавычек»).
нажмите shift+ bпереместите курсор в начало текущего слова
iтип печати '(одинарные кавычки)
нажмите, escзатем нажмите, eчтобы перейти к концу слова
нажмите, aзатем нажмите еще 'раз, чтобы заключить слово в кавычки.
нажмите, escчтобы войти в нормальный режим.
наконец нажмите, qчтобы записать его в
q
реестр.Как пользоваться
Вы можете изменить
step 4
что угодно: {строку, слово, пока не найдете какой-либо символ и т. Д.}.Сделать записанный макрос постоянным
сохранить и выйти
откройте ваши файлы, перейдите к некоторым словам
@q
если вы делаете это правильно, магические вещи должны появляться в ваших словах.
Вы можете сделать это для других макросов, которые вы любили.
источник
@q w
а затем вы можете заключить следующиеn
слова в кавычки, используя сn@j
.Например, перенос в одинарные кавычки
ciw'<C-r>"'<esc>
работает, но повтор не сработает. Пытаться:Это помещает содержимое регистра по умолчанию "буквально". Теперь вы можете нажать
.
на любое слово, чтобы заключить его в кавычки. Чтобы узнать больше см.:h[elp] i_ctrl-r
И больше о текстовых объектах на:h text-objects
Источник: http://vimcasts.org/episodes/pasting-from-insert-mode/
источник
ciw'<C-R><C-O>"'<Esc>
..
перезапишет содержимое последнего фактического вызова.Для пользователей VSCodeVim вы можете сделать
vwS"
"
на то, что хотите обернуть.w
любой другой оператор выбораисточник
viwS'
который заключает слово в одинарные кавычки. Безусловно самый простой.viwS"
Я не знаю какой-либо встроенной команды vim для этого, но использование
r"f'r"
перехода из «в» иr'f"r'
из «в» работает, если вы стоите на первом «или». Командаr'
заменяет любой символ, находящийся под вашим курсором, на «, иf"
двигает вас вперед к следующему ".источник
'r
и"r
) вы можете просто ввести «.
И», если хотите изменить больше кавычек,;
и,
перенести вас к следующей или предыдущей, поскольку они повторяют последнийf/F/t/T
поиск в том же направлении или в противоположном, соответственно.Добавление цитат
Я начал использовать эту быструю и грязную функцию в моем
.vimrc
:Итак, теперь я визуально выбираю все, что хочу (обычно с помощью
viw
- визуально выбираю внутри слова ) в кавычках и нажимаю Qдля двойных кавычек или нажимаю qдля одинарных кавычек.Удаление цитат
Я использую vim-textobj-quotes, чтобы vim рассматривал цитаты как текстовые объекты. Это означает, что я могу сделать
vaq
(визуально выбирать вокруг кавычек . Это находит ближайшие кавычки и визуально выбирает их. (Это необязательно, вы можете просто сделать что-то вродеf"vww
). Затем я нажимаю,s
чтобы удалить цитаты из выбора.Изменение цитаты
ПОЦЕЛУЙ. Я удаляю цитаты, затем добавляю цитаты . Например, чтобы заменить одиночные кавычки двойные кавычки, я бы выполнить действия: 1. Достаньте одиночные кавычки:
vaqs
2. добавить новые цитаты:vwQ
.источник
Если вы используете плагин vim https://github.com/tpope/vim-surround (или используете плагин VSCode Vim, который поставляется с предустановленным vim -round), это довольно удобно!
Добавить
падение
изменение
Это даже работает для тегов HTML!
проверьте readme на github для лучших примеров
источник
Вот несколько простых сопоставлений, которые можно использовать для цитирования и кавычки слова:
источник
qw
qd
wq
VIM для VScode делает это потрясающе. Он основан на одном vim-Surround, если вы не используете vscode.
источник
Я использую nnoremap в моем .vimrc
Чтобы выделить слово одним словом
Чтобы удалить кавычки (также работает с двойными кавычками):
Правило помнить: 'sq' = одинарная кавычка.
источник
как насчет этого?
источник
%
он будет работать только с текущей строкой, если вы не выбрали весь файлЯ написал скрипт, который делает это:
Чтобы использовать, просто выделите что-то, нажмите control l, а затем введите символ. Если это один из символов, о которых знает функция, он предоставит правильный завершающий символ. Если это не так, он будет использовать один и тот же символ для вставки с обеих сторон.
Surround.vim может сделать больше, чем просто это, но этого было достаточно для моих нужд.
источник
Пример карты визуального режима для добавления одинарных кавычек вокруг выделенного блока текста:
источник