4

我正在使用“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 个空格而不是任何制表符。

4

3 回答 3

1

set shiftwidth=4

'shiftwidth' 'sw'   number  (default 8)
            local to buffer
    Number of spaces to use for each step of (auto)indent.  
于 2011-08-07T02:29:21.110 回答
1

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

  1. 将缩进设置为两个空格,并且必须按两次 Tab。

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

    :imap <Tab> <Space><Space><Space><Space> 
    
  3. 使用一个修补过的 Vim,它允许你设置任意的制表位。Vim 补丁页面上有一个可变的制表位补丁。

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

于 2011-08-07T13:32:03.117 回答
0

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

于 2011-08-07T12:54:57.960 回答