Бесстрашная проблема с Tab в Vim, в грамотном Haskell - PullRequest
4 голосов
/ 07 августа 2011

Я использую грамотный haskell в стиле "Bird", который требует, чтобы весь код был похож на следующее:

> module Main (main) where

и если у меня есть блок, он должен выглядеть примерно так:

> main = do
>     args = getArgs
>     file = args!![0]

и т.д.. Однако, когда я ввожу знак gt, затем пробел и нажимаю на табуляцию, он вкладывает только два пробела!

Я сделал следующее, чтобы решить проблему:

set tabexpand
set tabstop=4
set softtabstop=4
set noautoindent
set shiftwidth=4

Любая помощь будет принята с благодарностью. Я подумал, что вышеприведенный текст просто вставит 4 пробела, а не любые вкладки.

Ответы [ 3 ]

1 голос
/ 07 августа 2011

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

  1. Установите отступ в два пробела ижить с необходимостью дважды нажать клавишу табуляции.

  2. Сделать вкладку без разбора вставлять 4 пробела в режиме вставки, игнорируя все правила / опции остановки табуляции и отступа.1012 *

    Используйте пропатченный Vim, который позволяет вам устанавливать произвольные табуляции.На на странице патчей Vim есть переменная заплатка tabstops .

  3. Напишите свой собственный алгоритм отступов.Подробнее о том, как это сделать, см. :help indentexpr.

1 голос
/ 07 августа 2011

set shiftwidth=4

'shiftwidth' 'sw'   number  (default 8)
            local to buffer
    Number of spaces to use for each step of (auto)indent.  
0 голосов
/ 07 августа 2011

Конечно, Vim перемещает курсор на столбец 4, где находится следующая вкладка. Не знаю, есть ли способ установить для первой вкладки столбец 6 (или 2).

...