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

энергия или энергия могут использоваться, чтобы прокомментировать или расположить с отступом одновременно много строк? Например:

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?

16
задан serenesat 15 December 2016 в 11:14
поделиться

8 ответов

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

:12,17s/^/#

6
ответ дан 30 November 2019 в 15:12
поделиться

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

2
ответ дан 30 November 2019 в 15:12
поделиться

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

>)

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

>ip

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

>i{

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

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

:help v_a
2
ответ дан 30 November 2019 в 15:12
поделиться

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

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

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

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

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

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

1
ответ дан 30 November 2019 в 15:12
поделиться

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

<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
0
ответ дан 30 November 2019 в 15:12
поделиться

Чтобы оставить комментарий, нажмите заглавную V , чтобы войти в режим ВИЗУАЛЬНОЙ ЛИНИИ, выберите все строки, затем нажмите : для входа в командный режим и использования команды (обратите внимание, что VIM уже включает метки '<,'> для вас):

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

Если вы предпочитаете использовать решетки рядом с текстом, а не рядом с левым полем, команда следующая:

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

Для отступа выберите тот же блок, затем введите > для отступа, < для удаления.

14
ответ дан 30 November 2019 в 15:12
поделиться

Для комментирования вы можете использовать выделение ВИЗУАЛЬНЫЙ БЛОК (Ctrl-V) и выбрать начало строк, затем нажать Shift-I и написать один #. После нажатия Esc все строки получат #.

0
ответ дан 30 November 2019 в 15:12
поделиться

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

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

0
ответ дан 30 November 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: