Ответ 1
вот еще один способ.
- блокировать строки с помощью
ctrl+v
- Вставить знак комментария (
//
) с помощьюI
- побег с ESC
ввод ключа
ctrl+v
→ jjjj
→ I
→ //
→ ESC
Можно ли использовать 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?
вот еще один способ.
ctrl+v
//
) с помощью I
ввод ключа
ctrl+v
→ jjjj
→ I
→ //
→ ESC
Чтобы прокомментировать, нажмите столику V, чтобы войти в режим VISUAL LINE, выберите все строки, затем нажмите :, чтобы войти в командный режим и использовать команду (обратите внимание, что VIM уже содержит метки '<,'>
для вас):
:'<,'>s/^/#/
Если вы предпочитаете метки хэша рядом с текстом, а не рядом с левым полем, команда:
:'<,'>s/^\(\s*\)/\1#/
В отступ, выберите один и тот же блок, затем введите >
в отступ, <
, чтобы сделать unindent.
введите :set number
. обратите внимание на номер начальной и конечной строки блока, который вы хотите прокомментировать. затем выполните замену диапазона адресов, например
:12,17s/^/#
Подобно принятому ответу, но проще для блоков или абзацев:
Ctrl + V
}
I
(верхний регистр i)#
(с пробелом после char, no Enter
!)ESC
Это должно автоматически заполнить символ во всем выбранном блоке.
В основном разница с принятым ответом заключается в том, что вместо того, чтобы использовать j
для перехода вниз по строкам, вы используете }
для выбора всего абзаца (или вы можете использовать G
для конца файла, например.
Краткая версия:
Ctrl + V
+ }
+ I
+ #
+ ESC
Я знаю, что здесь есть миллион ответов, объясняющих, как использовать >
и <
для отступов, поэтому я не буду беспокоиться об этом. Что касается комментариев, хотя, хотя вы можете сделать это быстро и грязно с помощью вставки блока или подстановки, вы можете сделать лучше с помощью Плагин NERD Commenter. Он предоставляет команды для комментирования и раскомментации различными способами, он знает, какой символ комментария вставить на основе синтаксиса, и он может делать довольно многострочные комментарии, если язык их поддерживает.
Здесь много ответов, все с темой. Лучший способ сделать это действительно зависит от контекста (поскольку контекст определяет самый простой способ навигации), поэтому я сделаю некоторые предположения о контексте. Если раздел, который вы хотите отступом или комментарием, является одним абзацем (например, вы хотите отступом или комментировать все, начиная с курсора до следующей пустой строки), вы можете отступать с помощью:
>)
Если курсор не находится в начале абзаца, но раздел, который вы хотите отступать, - это один абзац, а курсор находится посередине, используйте
>ip
Наконец, предположим, что вы хотите отделить блок кода, ограниченный {}, и курсор находится в середине этого блока. Используйте
>i{
Чтобы прокомментировать, в каждом случае просто замените > с помощью v и используйте приведенные выше команды для выбора блока, затем замените текст как s/^/#/.
Ключ - это команды навигации. Я настоятельно рекомендую
:help v_a
Выберите линии, используя визуальный режим.
Чтобы отступать, введите t20 > или <<
в отступ справа или слева соответственно. Для отступов n раз введите n>>
или n<<
.
Чтобы прокомментировать, замените начало строки комментарием:
: '<' > s/^/#/
'<,'>
означает "от начала выбора до конца".
s/^/#/
заменяет начало каждой строки в диапазоне #
, предполагая, что #
делает строку в комментарии.
Поместите курсор в первую строку, подсчитайте, сколько строк должно быть отступом, в приведенном выше примере это 5, затем для типа hash (#)
:.,.+5%s/^\([ <tab>]*\)/#\1/<enter>
или для отступов табуляции,
:.,.+5%s/^\([ <tab>]*\)/<tab>\1/<enter>
< & вкладка GT; и <enter> введите вкладку и введите ключи.
Есть, вероятно, более элегантные способы сделать это, но что-то вроде этого - быстро-грязная вещь.
Для комментариев вы можете использовать выбор VISUAL BLOCK (Ctrl-V) и выбрать начало строк, а затем нажать Shift-I и записать один символ #. После нажатия Esc все строки получат #.
Мое обычное решение:
<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
Если вы используете Python (или другие языки, которые используют # в качестве комментария), более быстрый способ прокомментировать несколько строк:
Ctrl+v
) с начала строки.j
несколько раз).r
, затем #
.Чтобы раскомментировать, сделайте то же самое, но для третьего шага замените его пробелом.