vim 中的 html 缩进

发布于 2024-09-11 10:12:08 字数 257 浏览 5 评论 0原文

我不知道这是否可能,但是有人知道支持这种情况的缩进脚本吗?

(| 是光标)

如果

<div>|<div>

我按 Enter 键,我想看到

<div>
  |
</div>

而不是

 <div>
|<div>

I don't know if this is possible, but does anyone know of an indent script that will support this scenario?

(| is cursor)

given

<div>|<div>

if I press enter, I want to see

<div>
  |
</div>

instead of

 <div>
|<div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

请持续率性 2024-09-18 10:12:08

delimitMate 会为您解决这个问题。
但是,您将需要两个额外的设置...

添加 >:<与 html 文件列表配对:

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

并告诉它在插入 a 后要添加什么模式

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

(这将插入两个 s,而不是插入两个 a ,按向上键,然后插入一个制表符)

delimitMate will take care of this for you.
You will however, need two additional settings...

add the >:< pair to the list of html files:

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

and tell it what pattern you'd like to add after inserting a

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

(this will, instead of inserting two a , insert two s, press up, then insert a tab)

呢古 2024-09-18 10:12:08

最终选择了布莱恩·卡珀斯的答案,只做了很小的修改

"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>

Ended up going with brian Carpers answer, only modified very slightly

"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>
缱绻入梦 2024-09-18 10:12:08

你可以这样做:

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>

You could do something like this:

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文