2014-09-20 2 views
2

Я довольно новичок в Vim, но теперь использовал его совсем немного в течение месяца или двух. Я использую пару различных плагинов, но теперь застрял в проблеме ...Vim indentation (программирование на Python)

Всякий раз, когда я кодирую на Python, мне нравится иметь :set autoindent, поэтому мне не нужно делать все отступы , когда я делаю новую строку. НО! ... Если я, к примеру, написать этот код:

def foo(self): 
    pass 

    def __init__(self): 
     var = 42 

и нажмите «Enter» в Vim после «42», то мой автоотступ автоматически сделает две вкладки-вмятины, которые я автоматически преобразуются в 6 (я не могу вспомнить, является ли это :set tabstop=3, или это делает это :set shiftwidth=3). Но скажем, что я сожалею о новой строке и хочу ее удалить. Я привык к другим IDE (например, Eclipse или Dreamweaver, где я мог бы просто вернуться назад, что приведет к удалению новой строки и приведет меня к концу строки выше.

Я знаю, что могу просто нажать ' dd ', и удалите строку ... Но я в' Insert-mode ', когда я это делаю. Поэтому, чтобы сделать это, мне пришлось бы выйти из режима Insert, нажать' dd ', а затем ввести Вставка-режим снова, на мой взгляд, довольно хлопот для такой простой операции.

Oh Holy ВИМ-мастеров в небе! Услышь мои молитвы и помочь мне улучшить мои ВИМ-механика!

ответ

1

Отмена преждевременный войти пресса является простой задачей, вы не должны быть вынуждены падать обратно в нормальный режим для этого. Какой фальсет предложил, но я предпочитаю делать <c-w><c-w> ('ww' holding ctrl), что означает удаление последнего введенного вами слова (слово слева от вашего курсора). Вы могли map <c-w> функции, которая делает <c-w><c-w> на пустых строках, но, честно говоря, я не верю, что это стоит того, чтобы избежать простого двойного крана.

5

Вот варианты, которые я использую:

  • Ctrl + D: Dedent один уровень (не удаляет содержимое строки)
  • 0, Ctrl + D: Dedent все (не удаляет содержимое строки)
  • Ctrl + U: Удалить все символы перед (слева) курсором и перемещать курсор в начале строки.

Попробуйте :help i_ctrl-d/:help i_0_ctrl-d/:help i_ctrl-u

+0

Это потрясающе!Теперь я могу достичь того, что хотел, только с двумя действиями, без учета количества отступов (путем ввода CTRL-U + backspace). В идеале, я хотел бы иметь что-то, что я мог бы вставить в мой .vimrc-файл, который автоматически удалил все пробелы слева от курсора и новую строку, если строка была пустой. Я оставлю вопрос открытым, чтобы узнать, может ли кто-нибудь это придумать, но если нет, тогда я помету ваш ответ как решение. – Zeth

+0

@Zeth, Ctrl + U, Ctrl + U также будет работать. – falsetru

1

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

  • C-o (вставка-нормальный)
  • дд или d $

, если вы хотите повторно использовать линию ...

  • C-r "(вставки из регистра по умолчанию)

Вы можете использовать insert-normal для многих o Кроме того.