Какие команды Vim можно использовать для цитирования / удаления слов?



Как я могу быстро цитировать / удалять слова и изменять цитирование (например, от ' до ") в Vim? Я знаю про surround.ВИМ плагин, но я хотел бы использовать только Vim.

757   12  

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/

макросы способом

  1. пресс q и q для записи в регистр q (мы используем "q "в качестве ярлыка для запоминания"кавычек").

  2. пресс shift + b переместить курсор в начало текущего слова

  3. пресс Я тип ' (одинарные кавычки)

  4. пресс esc затем нажмите e перейти к концу слова

  5. пресс a нажмите клавишу ' снова окружить слово кавычками.

  6. нажмите q записать его в q зарегистрироваться.

как использовать :

  1. переместить курсор на нужное слово.
  2. пресс @q чтобы окружить слово двойные кавычки.
  3. пресс @@ если вы хотите повторить его в другое слово.

вы можете изменить 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.


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

" '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 С любым другим оператором выбора

Как насчет этого?

 :%s/\'/"/g

Comments

    Ничего не найдено.