Я разработчик Python и работаю в компании, где соглашение об отступах для Python - это два пробела, а не четыре.

Итак, я замечаю эту проблему, когда вставляю код из vim:

Вот текст, который я пытаюсь вставить:

def four_spaces():
    print "hello"

Этот текст скопирован в Mac из Chrome с помощью <cmd> c . Обратите внимание, что я использую vim в iTerm в Mac OS X.

Ниже приведены шаги для вставки этого в vim с использованием mac:

  1. :set paste Включить режим вставки
  2. режим Append
  3. a Вставка в Mac
  4. Результат показан в фрагменте 4. Обратите внимание, что это 4 пробела
  5. <Cmd> v * Визуальный режим для выбора выше
  6. v kk Исправить отступ
  7. Результат показан в фрагменте 7. Обратите внимание на ^ I

Фрагмент 4 (режим списка включен)

def four_spaces():$
    print "hello"$

Фрагмент 7 (режим списка включен)

def four_spaces():$
^Iprint "hello"$

Вот как выглядит мой файл .vimrc для тех, кто заинтересован:https://gist.github.com/anonymous/20b2a1f43125c0d39932bf430c8137dc

Проблема:

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что у меня есть символ табуляции, а не 2 пробела при использовании = . Это проблематично, потому что python использует отступ табуляции и не может позволить символам табуляции и пробелам сосуществовать вместе. Я пытаюсь выяснить, как получилось = не использует expandtab.

Вопрос: Как я могу вставить, используя <Cmd> v и такой, что:

  1. Vim правильно форматирует мой код в 2 пробела
  2. ИЛИ когда я использую = для исправления отступа, он не заменит ^I?

0