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

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

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

:s!^!//! 

а потом

 :s!^//!! 

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

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

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

  • Как изменить поведение авто-отступа vim?
  • vim latex: отключить quickfix
  • urksvt map esc ключ к последовательности клавиш
  • Запустите макрос vim из сценария bash
  • Как изменить пару измененных тегов HTML в Vim?
  • Как написать любой Unicode-ключ без предварительно запрограммированного ключа для него в kbd?
  • Ключ для завершения работы ОС Solaris
  • Ctrl-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 .

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

    Linux и Unix - лучшая ОС в мире.