代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

vim中的html缩进

  •  3
  • Matt Briggs  · 技术社区  · 14 年前

    我不知道这是否可行,但是有人知道一个缩进脚本可以支持这个场景吗?

    (|是光标)

    <div>|<div>
    

    如果我按回车键,我想看看

    <div>
      |
    </div>
    

     <div>
    |<div>
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Brian Carper    14 年前

    你可以这样做:

    function! NewlineInTag()
        let lnum = getline('.')
        let cnum = col('.')
    
        let chars = strpart(lnum, cnum - 2, 2)
        if chars =~ '><'
            return "\<CR>\<ESC>\<UP>$o"
        else
            return "\<CR>"
        endif
    endfunction
    
    imap <CR> <C-R>=NewlineInTag()<CR>
    
        2
  •  3
  •   sleepynate    14 年前

    我会帮你处理的。

    添加>:&书信电报;配对到html文件列表:

    au FileType html let delimitMate_matchpairs = "(:),[:],{:},>:<"
    

    告诉它在插入一个

    au FileType html let b:delimitMate_expand_cr = "\<CR>\<CR>\<Up>\<Tab>"
    

    (这将不是插入两个a,而是插入两个s,向上按,然后插入一个选项卡)

        3
  •  2
  •   Matt Briggs    14 年前

    最终得到了布莱恩·卡珀斯的答案,只是稍加修改

    "fancy html indenting
    function! NewlineInTag()
        let lnum = getline('.')
        let cnum = col('.')
    
        let chars = strpart(lnum, cnum - 2, 3)
        if chars =~ '></'
            return "\<CR>\<ESC>\<UP>$o"
        else
            return "\<CR>"
        endif
    endfunction
    
    autocmd FileType eruby,html imap <CR> <C-R>=NewlineInTag()<CR>