Я задавался вопросом, было ли какое-либо ключевое отображение в Vim, чтобы позволить мне располагать определенные строки кода с отступом (были ли те строки выбраны в визуальном режиме или n строках выше/ниже текущей позиции курсора).
Так в основном что-то, что преобразовывает следующее
def my_fun(x, y):
return x + y
кому:
#def my_fun(x, y):
# return x + y
Я хорошо с использованием также #
или """
для того, чтобы прокомментировать соответствующие строки. Идеально, я также хотел бы, чтобы тот же keymapping не прокомментировал строки, если данные строки были прокомментированы.
Шаг 1: Перейдите к первому столбцу первой строки, которую вы хотите прокомментировать.
Шаг 2: Нажмите: Ctrl + v и выберите строки, которые вы хотите прокомментировать:
Шаг 3: Shift - I
# пробел (Войдите в режим вставки слева, введите символы для вставки. Выделение исчезнет, но все строки внутри него будут изменены после шага 4.)
Шаг 4: Esc
Я обычно вычищаю визуальный блок (
), затем ищу и заменяю первый символ на:
:'<,'>s/^/#
(При входе в командный режим с выбранным визуальным блоком автоматически помещается '< , '> в командной строке) Затем я могу раскомментировать блок, вычеркнув тот же визуальный блок и:
:'<,'>s/^#//
Есть несколько хороших плагинов, помогающих комментировать / раскомментировать строки. Например Комментатор NERD .
У меня есть следующие строки в моем .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
После отмены:
# variable x
x = 0