Как закомментировать блоки кода, которые начинаются / заканчиваются определенным шаблоном в нескольких файлах в vim?

#vim

#vim

Вопрос:

Я закомментировал блоки кода в нескольких файлах с именами foo1.tex, …, foo9.tex. Каждый блок имеет несколько строк между одной строкой, начинающейся с «{ bf Решение.}» и заканчивающиеся » end{ex}».

 {bf Solution.}
Line1
Line2
...
Line100
end{ex}
  

Строка 1 ~ 100 — это строки, которые нужно закомментировать.

Ответ №1:

Вы можете создать следующий макрос:

qq для запуска макроса в регистре q

Затем найдите начало раздела, который вы хотите прокомментировать:

 /{\bf Solution.}
  

Перейдите на одну строку вниз до первого комментария:

 j
  

Перейдите в визуальный режим блока:

 ctrl-v
  

Найдите конец раздела:

 /\end{ex}
  

Перейдите на одну строку до последней, чтобы прокомментировать:

 k
  

Перейдите в режим вставки и добавьте комментарий:

 I% 
  

Вернитесь в обычный режим и остановите запись макроса:

 <escape>q
  

Затем вы можете запустить макрос с:

 @q
  

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

 :bufdo norm @q
  

Он будет комментировать один блок, поэтому его нужно будет повторить, если есть несколько блоков для комментариев.

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

1. Очень ценю ваш быстрый и потрясающий ответ!

2. Еще один вопрос: поскольку мне нужно вводить «@ q» много-много раз, есть ли способ автоматически выполнять это? @padawin

3. В данном файле вы можете сделать: %s/{\bf Solution.}//n чтобы подсчитать количество имеющихся блоков «Решения», а затем вызвать макрос это количество раз: 42@q (чтобы вызвать его 42 раза, конечно, 42 для замены фактическим количеством)