如何配置Vim,在5字符时间码后自动实现悬挂缩进?
MacVim 日志悬挂缩进实现方案
自动实现悬挂缩进(推荐)
在你的~/.vimrc(MacVim配置文件)中添加以下配置,让Vim自动识别日志行格式并触发悬挂缩进:
" 针对日志文件启用局部配置(可根据实际文件名调整,比如*.log或*.txt) autocmd BufEnter *.log,*.txt setlocal formatoptions+=r autocmd BufEnter *.log,*.txt setlocal indentexpr=GetLogIndent() function! GetLogIndent() let prev_line = getline(v:lnum - 1) " 匹配「1个空格+HH:MM格式时间码+2个空格」的行前缀 if prev_line =~# '^ \d\{2}:\d\{2} ' " 返回前缀总长度作为缩进值,确保换行后对齐内容起始位置 return len(matchstr(prev_line, '^ \d\{2}:\d\{2} ')) else " 非日志行沿用上一行缩进 return indent(v:lnum - 1) endif endfunction
配置说明:
formatoptions+=r:开启自动换行时的缩进继承,让Vim在回车时应用自定义缩进规则。indentexpr:通过自定义函数GetLogIndent()判断上一行是否符合日志格式,若是则返回前缀长度作为当前行缩进,实现悬挂对齐。- 如果你使用特定后缀的日志文件,可修改
autocmd中的文件匹配规则(比如只针对*.journal)。
临时手动调整(应急用)
如果不想修改配置,可手动选中需要调整的行,按>8(对应前缀总长度)快速缩进,实现对齐效果。
内容的提问来源于stack exchange,提问作者Paul Dulaney
相关产品推荐
相关产品推荐

