Условный поиск и замена на строке в vim?

Скажем, я хочу прокомментировать и раскомментировать строку.

я знаю что могу

:s!^!//! 

а потом

 :s!^//!! 

Теперь, если я хочу, чтобы это было одним лайнером?

В принципе, если строка начинается с // то удалите ее, иначе добавьте ее.

Я хочу сопоставить эту команду с одним ярлыком вместо двух.

One Solution collect form web for “Условный поиск и замена на строке в vim?”

Я совершенно уверен, что это невозможно сделать напрямую. Однако, я придумал функцию для вас. Поместите это в свой файл ~/.vimrc :

 function! Toggle() s!^\(\s*/\?[^/\s]/\?\)!xxx//\1!e s!^\(\s*\)//!\1!e s!^xxx//!//!e endfunc 

(Это изменит любой xxx// вас уже есть в начале строки в // , но я бы предположил, что это редкое явление). Вы можете вызвать это, когда захотите :call Toggle() , но, вероятно, вам будет удобнее сопоставить его с ключом / комбо. Следующее отобразит его в Ctrl + / ; конечно, вы можете заменить любую комбинацию клавиш, которую вы предпочитаете (спросите, нужна ли вам помощь в сопоставлении с другой комбо). Поместите это тоже в ~.vimrc :

 nnoremap <C-/> :call Toggle()<CR> vnoremap <C-/> :call Toggle()<CR> inoremap <C-/> <Esc>:call Toggle()<CR>i 

Эти карты Ctrl + / для функции в нормальном, визуальном и вставном режимах соответственно. Обратите внимание, что отображение вставки вернет вас в режим вставки, но переместите курсор в начало строки. Если вы предпочитаете оставаться в обычном режиме, просто inoremap i с конца строки inoremap .

(Обновлено для работы с пробелом. Удаляет // после пробела, но всегда вставляет в начале строки)

  • Настройка Vim с сервером клиентов и буфером обмена
  • Не удалось установить vim на RasPi (Raspbian GNU / Linux 7)
  • Установка световой схемы vim на gnome-terminal
  • номера строк отображения vimrc
  • Поиск «не новой строки» в vim?
  • Индивидуальный vimrc для подпапок и проектов
  • Vim, отложить отступ в глобальной конфигурации
  • искать и заменять номера в vim
  • Каковы основные различия между vim и vi?
  • Как выражать «Есть указанный символ в следующих неизвестных числах символов» в regex (vim)?
  • Настройка редактора в mutt: vim с параметрами?
  • Linux и Unix - лучшая ОС в мире.