在文字Haskell中激怒Vim中的Tab问题

时间:2011-08-07 02:19:55

标签: vim haskell tabs literate-programming

我正在使用“Bird”风格的文字haskell,它要求所有代码如下:

> 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 个答案:

答案 0 :(得分:1)

set shiftwidth=4

'shiftwidth' 'sw'   number  (default 8)
            local to buffer
    Number of spaces to use for each step of (auto)indent.  

答案 1 :(得分:1)

我不知道有什么简单的方法可以解决这个问题,但是这里有一些你可以尝试的解决方法(粗略的复杂程度)。

  1. 将缩进设置为两个空格,并且必须按两次标签才能生效。

  2. 制作标签不加选择地在插入模式下插入4个空格,忽略所有制表位和缩进规则/选项。

    :imap <Tab> <Space><Space><Space><Space> 
    
  3. 使用修补的Vim,它允许您设置任意tabstops。 the Vim patches page处有一个变量tabstops补丁。

  4. 编写自己的缩进算法。有关如何执行此操作的详细信息,请参阅:help indentexpr

答案 2 :(得分:0)

当然,Vim将光标移动到下一个tabstop所在的第4列。不知道是否有办法将第一个tabstop设置为col 6(或2)。