Какие команды Vim можно использовать для цитирования / удаления слов?
Как я могу быстро цитировать / удалять слова и изменять цитирование (например, от ' до ") в Vim? Я знаю про surround.ВИМ плагин, но я хотел бы использовать только Vim.
12 ответов:
surround.ВИМ будет вашим самым простым ответом. Если вы действительно настроены против его использования, вот несколько примеров того, что вы можете сделать. Не обязательно самый эффективный,но именно поэтому объемный.ВИМ был написан.
- цитата слово, используя одинарные кавычки
ciw'Ctrl+r"'
ciw- удалить слово курсор включен, и в конечном итоге в режиме вставки.'- добавить первую цитату.Ctrl+r"- вставить содержимое элемент"Регистрация, ака последний рывок / удалить.'- добавить котировки закрытия.
- отменить кавычки слово, которое заключено в одинарные кавычки
di'hPl2x
di'- удалить слово, заключенное в одинарные кавычки.hP- переместите курсор влево на одно место (поверх открывающей цитаты) и поместите только что удаленный текст перед цитатой.l- переместить курсор вправо место (поверх открывающей цитаты).2x- удалить две цитаты.
- поменять одинарные кавычки на двойные кавычки
va':s/\%V'\%V/"/g
va'- визуально выберите цитируемое Слово и кавычки.:s/- начать замену.\%V'\%V- только одинарные кавычки, которые находятся в визуально выбранном регионе./"/g- замените их все на двойные кавычки.
цитата слово, используя одинарные кавычки
ciw'Ctrl+r"'мне было легче сделать это таким образом
ciw '' Esc P
В дополнение к другим командам, это будет заключать все слова в строку в двойных кавычках (в соответствии с вашим комментарием)
:s/\(\S\+\)/""/или если вы хотите уменьшить количество обратных косых черт, вы можете поставить
\v(очень-волшебный) модификатор в начале шаблона:s/\v(\S+)/""/
вот некоторые отображения, которые могут помочь:
:nnoremap <Leader>q" ciw""<Esc>P :nnoremap <Leader>q' ciw''<Esc>P :nnoremap <Leader>qd daW"=substitute(@@,"'\\|\"","","g")<CR>Pесли вы не изменили переменную mapleader, то активируйте сопоставление с помощью
\q"\q'или\qd. Они добавляют двойную кавычку вокруг слова под курсором, одинарную кавычку вокруг слова под курсором, удаляют любые кавычки вокруг слова под курсором соответственно.
заключать в одинарные кавычки (например)
ciw'<C-r>"'<esc>работает, а повторить не работает. Попробуйте:ciw'<C-r><C-o>"'<esc>это помещает содержимое регистра по умолчанию "буквально". Теперь вы можете нажать
.на любое слово, чтобы обернуть его в кавычки. Чтобы узнать больше см.:h[elp] i_ctrl-rи еще о текстовых объектах в:h text-objectsИсточник:http://vimcasts.org/episodes/pasting-from-insert-mode/
макросы способом
пресс q и q для записи в регистр q (мы используем "q "в качестве ярлыка для запоминания"кавычек").
пресс shift + b переместить курсор в начало текущего слова
пресс Я тип ' (одинарные кавычки)
пресс esc затем нажмите e перейти к концу слова
пресс a нажмите клавишу ' снова окружить слово кавычками.
нажмите q записать его в
qзарегистрироваться.как использовать :
- переместить курсор на нужное слово.
- пресс @q чтобы окружить слово двойные кавычки.
- пресс @@ если вы хотите повторить его в другое слово.
вы можете изменить
step 4со всем, что вам нравится {строка, слово, пока не найден какой-то символ и т. д.}. Положите его вvim variablesи.vimrcповторить ваше счастье.
Я не знаю никакой встроенной команды vim для этого, но с помощью
r"f'r"изменить на " иr'f"r'изменить с " С 'работает, если вы стоите на первом' или ". Командаr'заменяет любой символ под курсором с ', иf"перемещает вас вперед к следующему ".
Добавлять Кавычки
я начал использовать эту быструю и грязную функцию в моем
.vimrc:vnoremap q <esc>:call QuickWrap("'")<cr> vnoremap Q <esc>:call QuickWrap('"')<cr> function! QuickWrap(wrapper) let l:w = a:wrapper let l:inside_or_around = (&selection == 'exclusive') ? ('i') : ('a') normal `> execute "normal " . inside_or_around . escape(w, '\') normal `< execute "normal i" . escape(w, '\') normal `< endfunctionИтак, теперь я визуально выбираю все, что хочу (обычно через
viw- визуально выберите внутри word) в кавычках и нажмите Q для двойных кавычек, или нажмите q для одинарных кавычек.Убрав Кавычки
vnoremap s <esc>:call StripWrap()<cr> function! StripWrap() normal `>x`<x endfunctionЯ использую vim-textobj-quotes так что vim обрабатывает кавычки как текстовые объекты. Это означает, что я могу сделать
vaq(визуально выберите вокруг кавычки. Это находит ближайшие кавычки и визуально выбирает их. (Это необязательно, вы можете просто сделать что-то вродеf"vww). Затем я нажимаюsдо прокладки цитаты из отбора.Изменение Котировок
поцелуй. Я уберите кавычки затем добавить кавычки. Например, чтобы заменить один котировки с двойными кавычками, я бы выполнил шаги: 1. удалить одинарные кавычки:
vaqs, 2. добавить новые цитаты:vwQ.
- http://vim.wikia.com/wiki/Wrap_a_visual_selection_in_an_HTML_tag код отсюда был изменен и использован как часть моего ответа
- https://github.com/beloglazov/vim-textobj-quotes vim-text-obj-quotes
вот несколько простых отображений, которые можно использовать для цитирования и удаления слова:
" 'quote' a word nnoremap qw :silent! normal mpea'<Esc>bi'<Esc>`pl " double "quote" a word nnoremap qd :silent! normal mpea"<Esc>bi"<Esc>`pl " remove quotes from a word nnoremap wq :silent! normal mpeld bhd `ph<CR>
Я использую nnoremap в моем .vimrc
в одинарной кавычке слово:
nnoremap sq :silent! normal mpea'<Esc>bi'<Esc>`plдля удаления кавычек (работает и с двойными кавычками):
nnoremap qs :silent! normal mpeld bhd `ph<CR>правило запоминания: 'sq' = одинарная кавычка.
для пользователей VSCodeVim вы можете сделать
vwS"
- вы можете заменить
"с тем,что вы хотели бы обернуть.- вы можете заменить
wС любым другим оператором выбора
Comments