我怎样才能将空格作为唯一的分隔符来表达

时间:2014-05-23 09:02:33

标签: vim nagios

我有以下nagios配置代码段。我无法用tabularize命令来表达仅由制表符/空格分隔的参数值。

define service{
    use                             local-service,srv-pnp         
    name        http
    service_description             http
    check_command     check_http!-w 5 -c 10 -H www.kpoint.com -u /
    register      0
}

编辑:

预期输出

define service{
    use                   local-service,srv-pnp         
    name                  http
    service_description   http
    check_command         check_http!-w 5 -c 10 -H www.kpoint.com -u /
    register              0
}

有任何替代表格吗?

2 个答案:

答案 0 :(得分:2)

以下命令可以解决问题。

:Tabularize /^\s*\w*

The link虽然没有回答确切的问题,但却有答案。

答案 1 :(得分:0)

非常肮脏且快速的方式:

function! GetOffsetSpacesAndReplace()
    let [line1,col1] = getpos("'<")[1:2]
    let [line2,col2] = getpos("'>")[1:2]
    let max_len = 0
    for i in range(line1, line2)
        let my_line = getline(i)
        let matching_str = matchstr(my_line, '^\s*\w*\s*')
        if len(matching_str) > max_len
            let max_len = len(matching_str)
        endif
    endfor
    for i in range(line1, line2)
        let my_line = getline(i)
        let matching_str = matchstr(my_line, '^\s*\w*\s*')
        let col_pos = len(matching_str)
        call setpos('.', [0, i, col_pos, 0])
        let @s=' '
        if max_len - col_pos > 0
            execute 'normal! "s'.(max_len - col_pos).'p'
        endif
    endfor
    return 1
endfunction

vmap <silent> <buffer> <F3> :call GetOffsetSpacesAndReplace()<CR>

此功能允许您直观地选择内部块,然后根据需要运行缩进功能。

这很脏,主要是因为它只回答了你的要求。

为了使用更灵活的工具进行缩进,您应该检查优秀的插件vim-easy-align

我每天都在使用它而没有任何问题。