textmate ›› vim для python - проблемы с прорезыванием зубов: особенно отступы

Я (пытаюсь) перейти от textmate к vim [точнее, macvim] в качестве основного редактора. Я уже установил snipmate - интересно, есть ли другие плагины, которые вы бы посоветовали мне установить?

В частности, у меня, похоже, много проблем с отступами (<<, похоже, действительно делает некоторые очень странные / непредсказуемые вещи), и я не могу найти решение для этого - есть ли плагины, которые мне нужны для того, чтобы это работало должным образом ?

Спасибо!


person malangi    schedule 30.09.2010    source источник


Ответы (3)


Для исходного кода

:h =

Вкратце, в нормальном режиме внутри блока, с которым вы хотите работать:

  • =a{, чтобы изменить отступ блока. =a} и =aB тоже работают.
  • =2a{, чтобы изменить отступ этого блока и его внешнего блока.
  • Если вы стоите на скобке, =% изменит отступ до соответствующей скобки.
  • >a{, чтобы увеличить отступ этого блока.
  • <a{, чтобы уменьшить отступ этого блока.
  • . повторяет последнюю команду, поэтому <a{. уменьшает отступ этого блока вдвое.

Убедитесь, что у вас установлен filetype, чтобы Vim распознавал тип файла. В конце концов, отступы - это функция типа файла.

Для текста

:h gq
  • gq {отформатирует этот абзац.
  • gq (отформатирует это предложение.
  • gqgq отформатирует эту строку.
  • gggqG отформатирует весь документ.
person wilhelmtell    schedule 30.09.2010
comment
можете ли вы более конкретно рассказать о соответствующем рабочем процессе? скажем, чтобы удалить блок? - person meduz; 22.11.2010
comment
Между прочим, я вижу, что вы парень-питон. В Python отступы участвуют в семантике и логике программы. Vim не программирует для вас. Иногда можно увидеть, что определенный диапазон строк должен иметь, по крайней мере, определенный отступ, чтобы программа была действительной и красивой. Но в Python вам часто требуется дополнительный отступ с помощью команд < и >, чтобы настроить семантику вещей. - person wilhelmtell; 22.11.2010
comment
Например, в Python if True: \ndothis() \ndothat() может означать разные вещи в зависимости от отступа. (представьте \n как новую строку). Должен ли dothat() быть частью if блока или внешнего блока? Vim не может ответить на этот вопрос, но он может точно сказать, что dothis() должен иметь отступ, чтобы программа была действительной. Он оставит dothat() без отступа, чтобы вы могли решить, в каком объеме это должно быть. - person wilhelmtell; 22.11.2010

Задайте параметр типа файла в файле vimrc

filetype plugin indent on

Это должно включить плагины типа файла и автоматический отступ

person Rohit Viswanath    schedule 30.09.2010

Я не уверен, что именно вам нужно, поскольку я не использовал textmate. Но я использую эти плагины для VIM . Они мне очень помогли.

person Srikar Appalaraju    schedule 30.09.2010