5

Я хочу, чтобы мой vim отступ работал следующим образом: если у меня есть

▷   ▷   int function(int x,▒int y, int z) {

и я нажимаю Enter, я хочу получить следующее:

▷   ▷   int function(int x,
▷   ▷   _____________int y, int z) {

Где «▷» - это вкладка, а "_" - пробел.

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

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

До сих пор я не нашел способа, которым это возможно с Vim. Preserveindent и copyindent - это не то, что я ищу. Они соблюдают expandtab, и я хочу использовать expandtab только для отступов и пробелы для выравнивания.

2 ответа2

2

Согласно Vim Wiki, плагин Smart Tabs сделает это. Я сам не пробовал.

1

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

x = fn(abc, 'def', {
                       ghi: jkl,
                       mno: pqr,
                   })

Должны ли вы вернуться к вкладкам в какой-то момент? Это было бы идеально, но очень чувствительно к контексту и не работало бы на нескольких языках. Еще один забавный пример в haskell:

data Something = Something { flag1 :: Bool
                           , flag2 :: Bool }
               deriving (Eq, Ord, Show)

Удачи с этим.

Я пришел к выводу, что, к сожалению, для такого рода функций необходимы расширения для конкретного языка. Если вы знаете хороший способ сделать это, я бы хотел это услышать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .