Отступ или комментарий нескольких текстовых строк с vi

Можно ли использовать vim или vim для комментариев или отступов одновременно с несколькими строками? Например:

for item in Lista:
    ind = int(floor(1.0*(item-lmin)/width))
    if ind==nintervals:
        ind=ind-1
    print item,ind

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

#for item in Lista:
    #ind = int(floor(1.0*(item-lmin)/width))
    #if ind==nintervals:
        #ind=ind-1
    #print item,ind

или отступом, чтобы:

  for item in Lista:
      ind = int(floor(1.0*(item-lmin)/width))
      if ind==nintervals:
          ind=ind-1
      print item,ind

P.D. В чем разница между VI и VIM?

Ответы

Ответ 1

вот еще один способ.

  • блокировать строки с помощью ctrl+v
  • Вставить знак комментария (//) с помощью I
  • побег с ESC

ввод ключа

ctrl+vjjjjI//ESC

Ответ 2

Чтобы прокомментировать, нажмите столику V, чтобы войти в режим VISUAL LINE, выберите все строки, затем нажмите :, чтобы войти в командный режим и использовать команду (обратите внимание, что VIM уже содержит метки '<,'> для вас):

:'<,'>s/^/#/

Если вы предпочитаете метки хэша рядом с текстом, а не рядом с левым полем, команда:

:'<,'>s/^\(\s*\)/\1#/

В отступ, выберите один и тот же блок, затем введите > в отступ, <, чтобы сделать unindent.

Ответ 3

введите :set number. обратите внимание на номер начальной и конечной строки блока, который вы хотите прокомментировать. затем выполните замену диапазона адресов, например

:12,17s/^/#

Ответ 4

Подобно принятому ответу, но проще для блоков или абзацев:

  • Строки блока: Ctrl + V
  • Выберите пункт: }
  • Режим вставки: I (верхний регистр i)
  • Введите символ типа: # (с пробелом после char, no Enter!)
  • Нажмите: ESC

Это должно автоматически заполнить символ во всем выбранном блоке. В основном разница с принятым ответом заключается в том, что вместо того, чтобы использовать j для перехода вниз по строкам, вы используете } для выбора всего абзаца (или вы можете использовать G для конца файла, например.

Краткая версия:

Ctrl + V + } + I + # + ESC

Ответ 5

Я знаю, что здесь есть миллион ответов, объясняющих, как использовать > и < для отступов, поэтому я не буду беспокоиться об этом. Что касается комментариев, хотя, хотя вы можете сделать это быстро и грязно с помощью вставки блока или подстановки, вы можете сделать лучше с помощью Плагин NERD Commenter. Он предоставляет команды для комментирования и раскомментации различными способами, он знает, какой символ комментария вставить на основе синтаксиса, и он может делать довольно многострочные комментарии, если язык их поддерживает.

Ответ 6

Здесь много ответов, все с темой. Лучший способ сделать это действительно зависит от контекста (поскольку контекст определяет самый простой способ навигации), поэтому я сделаю некоторые предположения о контексте. Если раздел, который вы хотите отступом или комментарием, является одним абзацем (например, вы хотите отступом или комментировать все, начиная с курсора до следующей пустой строки), вы можете отступать с помощью:

>)

Если курсор не находится в начале абзаца, но раздел, который вы хотите отступать, - это один абзац, а курсор находится посередине, используйте

>ip

Наконец, предположим, что вы хотите отделить блок кода, ограниченный {}, и курсор находится в середине этого блока. Используйте

>i{

Чтобы прокомментировать, в каждом случае просто замените > с помощью v и используйте приведенные выше команды для выбора блока, затем замените текст как s/^/#/.

Ключ - это команды навигации. Я настоятельно рекомендую

:help v_a

Ответ 7

Выберите линии, используя визуальный режим.

  • Чтобы отступать, введите t20 > или << в отступ справа или слева соответственно. Для отступов n раз введите n>> или n<<.

  • Чтобы прокомментировать, замените начало строки комментарием:

    : '<' > s/^/#/

'<,'> означает "от начала выбора до конца".

s/^/#/ заменяет начало каждой строки в диапазоне #, предполагая, что # делает строку в комментарии.

Ответ 8

Поместите курсор в первую строку, подсчитайте, сколько строк должно быть отступом, в приведенном выше примере это 5, затем для типа hash (#) :.,.+5%s/^\([ <tab>]*\)/#\1/<enter> или для отступов табуляции, :.,.+5%s/^\([ <tab>]*\)/<tab>\1/<enter> < & вкладка GT; и <enter> введите вкладку и введите ключи.

Есть, вероятно, более элегантные способы сделать это, но что-то вроде этого - быстро-грязная вещь.

Ответ 9

Для комментариев вы можете использовать выбор VISUAL BLOCK (Ctrl-V) и выбрать начало строк, а затем нажать Shift-I и записать один символ #. После нажатия Esc все строки получат #.

Ответ 10

Мое обычное решение:

<ESC>
<q><a> => start a macro and save it as macro a
<^> => to get to the start of the line
<i> => insert mode
<#> => Add the #
<ESC> => End insert mode
<down> => Move to the next line
<q> => End macro

Затем один раз:

<[at]><a> => repeat macro a

Затем просто повторите < [at] > < [at] > (повторите последний выполненный макрос), пока не будут прокомментированы все строки. Вы можете просто удерживать < [at] > и повторить повтор клавиатуры.

BTW: Как вы пишете знак [at] здесь без stackoverflow, превращая его в " > blockquote"?

Отступ:

[shift] + [v] => line select mode
[down] => until all lines to indent are selected

то

[>] => indent once

или

[2..x][>] => indent 2..x levels

Ответ 11

Если вы используете Python (или другие языки, которые используют # в качестве комментария), более быстрый способ прокомментировать несколько строк:

  • Введите режим визуального блока (Ctrl+v) с начала строки.
  • Спуститесь по мере необходимости (j несколько раз).
  • Замените пробел # нажатием r, затем #.

Чтобы раскомментировать, сделайте то же самое, но для третьего шага замените его пробелом.