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

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

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

:s!^!//! 

а потом

 :s!^//!! 

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

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

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

  • цвета vim не загружаются автоматически (вероятный конфликт Vundle)
  • Редактирование текстового файла с Vim не обновляет tail -f
  • Как сохранить файл с помощью Vim, а затем выполнить команду в bash
  • флажок vim для добавления строки и сохранения
  • Предлагаемая настройка для сверхлегкой текстовой среды программирования в Linux
  • Как я могу заставить sudo crontab -e использовать среду `sudoedit`?
  • Как поместить текущую строку вверху / центру / внизу экрана в vim?
  • Открыть несколько файлов от ranger в vim
  • 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 - лучшая ОС в мире.