Какой самый элегантный способ комментировать / раскомментировать блоки кода ruby ​​в Vim? - PullRequest
39 голосов
/ 20 января 2009

В VIM, в тот момент, когда мне нужно закомментировать раздел кода Ruby:

  • Я перехожу к первому столбцу в строке, которую хочу закомментировать
  • Я нажимаю CTRL-v, чтобы войти в режим визуального блока
  • Я иду вниз до места, где хочу завершить операцию
  • Я набираю r<space>, если я хочу раскомментировать код, или r#, если я хочу его закомментировать.

Этот рабочий процесс мне кажется нормальным, есть ли способы улучшить этот процесс? Есть ли еще какие-нибудь хитрости для комментирования или раскомментирования разделов ruby-кода в vim?

Ответы [ 10 ]

38 голосов
/ 23 января 2009

Я делаю почти то же самое, что и вы.

комментируя:

  • выбор визуального блока с помощью CTRL-V, затем I# (вставить # в начале)

раскомментировав:

  • выбор визуального блока с помощью CTRL-V, затем X (удалить первый символ в строке)

Обратите внимание, заглавные буквы I и X.

13 голосов
/ 21 января 2009

Для каждого языка (ftplugin) я пишу сопоставления, которые добавляют или удаляют заголовок комментария и перемещают курсор вниз на одну строку. Например, в моем python ftplugin у меня есть это:

noremap   <buffer> K      :s,^\(\s*\)[^# \t]\@=,\1#,e<CR>:nohls<CR>zvj
noremap   <buffer> <C-K>  :s,^\(\s*\)#\s\@!,\1,e<CR>:nohls<CR>zvj

Я считаю, что это чрезвычайно гибкая настройка:

  • Нажмите K, чтобы прокомментировать текущую строку.
  • Нажмите K несколько раз, чтобы прокомментировать множество строк.
  • 6K, чтобы прокомментировать 6 строк.
  • K в визуальном режиме комментирует весь выбор.
  • Все можно так же раскомментировать, используя CTRL-K
  • Если строки уже прокомментированы, им не будет добавлено # к началу.
  • Если после # стоит пробел, он считается текстовым комментарием и не затрагивается.

Я немного адаптирую это для каждого языка. Это не работает так же хорошо для старых комментариев C (/*...*/), но я все равно предпочитаю их не использовать.

6 голосов
/ 22 июля 2013

Я использую эти плагины:

  1. vim-comment от Tim Pope, который определяет оператор комментария gc
  2. vim-textobj-rubyblock , который определяет ir (внутри блока Ruby) и ar (вокруг блока Ruby) для блоков Ruby do ....
  3. vim-ruby , который определяет im / am для внутреннего / вокруг метода Ruby и iM / aM для внутреннего / вокруг класса Ruby.

Используя эту комбинацию, я могу легко комментировать / раскомментировать специфичный для Ruby код в обычном режиме, например: gcir / gcar комментарий внутри / вокруг блока Ruby do / end. gcim / gcam комментарий внутри / вокруг метода Ruby. gciM / gcaM комментарий внутри / вокруг класса Ruby. Плюс обычные комментарии, такие как gcc для комментирования строки или 5gcc для комментирования 5 строк. В целом, он очень Vim-подобный и естественный. Надеюсь, это поможет.

6 голосов
/ 20 января 2009

Некоторым людям нравится Nerd Commenter

5 голосов
/ 20 января 2009

Мне нравится использовать следующее:

  • поставить курсор на первую строку, которую вы хотите закомментировать
  • введите ma (без двоеточия), чтобы поставить маркер на этой строке
  • перейти к последней строке блока, который вы хотите закомментировать
  • введите: 'a, .s / ^ / # / и затем введите

То есть от строки, содержащей маркер "a", до текущей строки подставьте хеш для начала строки.

5 голосов
/ 20 января 2009

Вы уже опробовали EnhCommentify.vim или tComment.vim ?

4 голосов
/ 21 января 2009

После визуального выбора в режиме блокировки текста, который вы хотите закомментировать, нажмите I (это заглавная буква i), введите # и, наконец, нажмите клавишу выхода. Это в основном та же процедура, которую вы используете в настоящее время, но с использованием вставки вместо замены.

2 голосов
/ 13 октября 2010

Вы также можете сделать это:

  • Перейти к первой строке, чтобы закомментировать
  • нажмите «ESC», затем
  • Нажмите Ctrl + q, чтобы войти в режим визуальной блокировки
  • Перейти к последней строке, чтобы закомментировать
  • Нажмите I, прокомментируйте, нажав #
  • Хит ESC

и раскомментировать:

  • Перейти к первому # комментарию
  • Нажмите Ctrl + q, чтобы войти в режим визуальной блокировки
  • Переместитесь на последнюю строку, чтобы закомментировать
  • Нажмите d, чтобы удалить символы комментария
1 голос
/ 03 июля 2014

Я порекомендую вам альтернативный способ комментирования с помощью Macro

Во-первых, просто вставьте это в ваш .vimrc

let @c="I#\ej"
let @u="^xj"

Для примера

Комментировать 12 строк:

  1. Перейдите к первой строке, в которой вы хотите начать свой комментарий.
  2. Введите 12@c в командном режиме, чтобы прокомментировать 12 строк

Раскомментировать 12 строк:

  1. Перейдите к первому ряду, который вы хотите раскомментировать.
  2. Введите 12@u в командном режиме, чтобы раскомментировать 12 строк

Заключение

Комментирование:

[quantifier]@c 

раскомментировав:

[quantifier]@u

примечание: эти команды начнут комментировать / раскомментировать вашу текущую строку.

Дополнительно:

Чтобы улучшить вашу навигацию number.vim может помочь вам с номером квантификатора.

https://github.com/myusuf3/numbers.vim

1 голос
/ 29 сентября 2011

Попробуйте T-комментарий с Блок Ruby .

У меня есть T-комментарий, сопоставленный с //.

" Easy commenting
nnoremap // :TComment<CR>
vnoremap // :TComment<CR>

Это позволяет из любого места в блоке Ruby комментировать его:

var  (visual around Ruby)
//   (toggle comments)

Обратите внимание, что у блоков Ruby есть пара зависимостей плагинов, которые необходимо установить, см. Мой Vimfiles для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...