Как прокомментировать блок кода Python в Vim

Мне было интересно, есть ли какое-либо ключевое сопоставление в Vim, чтобы я мог отступать от определенных строк кода (были ли эти строки выбраны в визуальном режиме или n строк выше/ниже текущей позиции курсора).

Итак, в основном что-то, что преобразует следующие

def my_fun(x, y):
    return x + y

к

#def my_fun(x, y):
#    return x + y

Я согласен с использованием # или """ для комментирования соответствующих строк. В идеале мне также хотелось бы, чтобы одно и то же keymapping раскололо строки, если данные строки были прокомментированы.

Ответ 1

Шаг 1: Перейдите к первому столбцу первой строки, которую вы хотите прокомментировать.

Initial State

Шаг 2: Нажмите: Ctrl + v и выберите строки, которые вы хотите прокомментировать:

Select lines

Шаг 3: Shift - I # space (Введите режим Insert-at-left, введите символы для вставки. исчезнут, но все строки внутри него будут изменены после шага 4.)

Comment

Шаг 4: Esc

<Esc>

Ответ 2

в одну сторону вручную

:set number
:10,12s/^/#

Ответ 3

Вы можете добавить следующее отображение в ваш .vimrc

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

Выделите свой блок:

Shift+v

#, чтобы прокомментировать ваши строки из первого столбца.

-#, чтобы раскомментировать тот же самый способ.

Ответ 4

Выделите свой блок: Shift+v

Прокомментируйте выбранный блок с помощью: :norm i# (нижний регистр i)

Чтобы раскомментировать, снова выделите свой блок и раскомментируйте: :norm ^x

Команда :norm выполняет действие для каждой выбранной строки. Комментирование введет # в начале каждой строки, и раскомментирование удалит это #.

Ответ 5

Есть несколько хороших плагинов, которые помогают прокомментировать/раскомментировать строки. Например Комментарий NERD.

Ответ 6

Я обычно выделяю визуальный блок (<C-V>), затем выполняю поиск и замену первого символа:

:'<,'>s/^/#

(Ввод командного режима с выбранным визуальным блоком автоматически помещает '<,' > в командную строку). Затем я могу раскомментировать блок, выметая один и тот же визуальный блок и:

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

Ответ 7

У меня есть следующие строки в .vimrc:

" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N><C-N>    <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n

" uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N>n     <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n

Ярлыки сохраняют позицию курсора и ваши комментарии до тех пор, пока они начинаются с # (пробел после #). Например:

# variable x
x = 0

После комментирования:

# variable x
#x = 0

После uncomennting:

# variable x
x = 0

Ответ 8

Честно говоря, я использую плагин tcomment для этой ссылки. Он может обрабатывать почти каждый синтаксис. Он определяет приятные движения, используя его с некоторыми текстовыми блоками, специфичными для python, делает его мощным инструментом.

Ответ 9

NERDcommenter - отличный плагин для комментирования, который автоматически определяет количество типов файлов и их соответствующие символы комментария. Смешно легко установить с помощью Pathogen.

Комментарий <leader>cc. Раскомментировать с помощью <leader>cu. И переключите комментарии с помощью <leader>c<space>.

(по умолчанию <leader> в vim есть \)

Ответ 10

Там много плагинов комментариев для vim - ряд из которых - многоязычный, а не только python. Если вы используете диспетчер плагинов, например Vundle, вы можете их искать (после установки Vundle), используя, например:

:PluginSearch comment

И вы получите окно результатов. В качестве альтернативы вы можете просто искать vim-скрипты для комментариев плагинов.

Ответ 11

Ctrl + k для комментария (визуальный режим):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

Ctrl + u для раскола (визуальный режим):

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>

Ответ 12

Очень минимальный легкий вес плагин: vim-commentary.

gcc, чтобы прокомментировать строку
gcgc для расторжения. еще раз просмотрите страницу плагина.

v+k/j выделите блок, затем gcc, чтобы прокомментировать этот блок.