如何配置Vim使其仅在上一行末尾带冒号时才触发自动缩进
Vim编辑YAML文件自定义缩进配置方案
本配置可实现仅在上一行末尾存在冒号时,YAML文件才自动触发换行缩进的需求。
配置步骤
- 打开你的Vim配置文件,默认路径为:
- Vim:
~/.vimrc - Neovim:
~/.config/nvim/init.vim
- Vim:
- 将以下代码添加到配置文件末尾:
" 开启文件类型检测与缩进插件(如已配置可忽略本行) filetype plugin indent on " 自定义YAML缩进规则组 augroup yaml_custom_indent autocmd! " 仅对YAML文件应用自定义缩进表达式 autocmd FileType yaml setlocal indentexpr=GetYamlCustomIndent() augroup END function! GetYamlCustomIndent() " 获取上一行内容 let l:prev_line = getline(v:lnum - 1) " 去除上一行首尾空白 let l:prev_trimmed = trim(l:prev_line) " 上一行为空时缩进为0 if l:prev_trimmed == '' return 0 endif " 上一行以冒号结尾时,缩进+2(YAML标准缩进单位) if l:prev_trimmed =~# ':$' return indent(v:lnum - 1) + 2 else " 其余情况和上一行缩进保持一致 return indent(v:lnum - 1) endif endfunction
- 保存配置文件后重启Vim,或在当前Vim窗口执行
:source 你的配置文件路径使配置立即生效。
配置说明
- 规则仅对YAML格式文件生效,不会干扰其他类型文件的缩进逻辑
- 默认缩进单位为2空格,如需调整可修改代码中
+ 2的数值,比如改为+ 4即可使用4空格缩进 - 如果需要同时支持列表项(
-开头的行)自动缩进,可将判断条件行修改为if l:prev_trimmed =~# ':$\|^-\s' - 如此前配置过其他YAML缩进相关规则,需先删除旧配置避免逻辑冲突
内容的提问来源于stack exchange,提问作者Élodie Petit
相关产品推荐
相关产品推荐

