Сделайте отступ или прокомментируйте несколько строк текста с помощью vi - PullRequest
16 голосов
/ 17 марта 2010

можно ли использовать 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?

Ответы [ 11 ]

38 голосов
/ 05 февраля 2012

вот другой способ.

  1. строки блоков с ctrl+v
  2. Вставить знак комментария (//) с I
  3. побег с ESC

набор клавиш

ctrl+v & rarr; jjjj & rarr; I & rarr; // & rarr; ESC

14 голосов
/ 17 марта 2010

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

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

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

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

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

6 голосов
/ 17 марта 2010

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

:12,17s/^/#

3 голосов
/ 11 мая 2016

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

  1. Строки блока: Ctrl + V
  2. Выберите абзац: }
  3. Режим вставки: I (прописные буквы i)
  4. Введите символ для вставки: # (с пробелом после символа, нет Enter!)
  5. Нажмите: ESC

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

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

Ctrl + V + } + I + # + ESC

2 голосов
/ 17 марта 2010

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

>)

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

>ip

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

>i{

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

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

:help v_a
2 голосов
/ 17 марта 2010

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

1 голос
/ 17 марта 2010

Выберите линии в визуальном режиме.

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

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

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

'<,'> означает «от начала выделения до конца.

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

0 голосов
/ 21 июля 2017

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

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

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

0 голосов
/ 17 марта 2010

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

<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]> и позволить клавиатуре повторить все остальное.

Кстати: как написать здесь знак [at], не используя stackoverflow, превратив его в "> blockquote"?

Для отступа:

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

, то:

[>] => indent once

или

[2..x][>] => indent 2..x levels
0 голосов
/ 17 марта 2010

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

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