最近常写Haskell代码, 苦于vim本身ftplugin除了语法加亮处没什么特別的功能。 深感其縮进功能欠佳。在其它语言中用Tab, >>, << 习惯了(我是TAB派的,讨厌空格作缩进)。 Haskell虽是缩进决定結构的,但不像Python,TAB作缩进将会变得很hässlich(貌似ghc本身的代码里也有许多Tab?)。 故自己写了一些脚本,使TAB不再是制表符,两是智能的缩进。先写这么多,明天再加其它feature autocmd FileType haskell call HaskellMode()
function HaskellMode()
"set shiftwidth=1
set autoindent
set tabstop =8
set expandtab
imap < silent > < TAB > < C-R > =HaskellTab()< CR >
"map o o<TAB>
"map O O<TAB>
call matchadd ( "ERROR" , " // t" )
endfunction
function HaskellTab()
if line ( "." ) == 1
return ""
endif
let letzte_zeile = getline ( line( "." ) - 1 )
let cursor_spalt = virtcol ( "." )
let springen_nach = matchend ( letzte_zeile, "[ // t] // +" , cursor_spalt)
if springen_nach <= cursor_spalt
"" schon am rechten Rand
return ""
else
return repeat ( " " , 1 + springen_nach - cursor_spalt)
endif
endfunction
[ 本帖最后由 wuchuanren 于 2009-10-18 21:02 编辑 ]
http://www.2plus3.eu/redirect.php?fid=22&tid=2453&goto=nextnewset