Vim 语法隐藏密码
Vim syntax conceal passwords
我正在为 PGP 加密密码创建一个 Vim 语法高亮文件,格式如下 post:http://pig-monkey.com/2013/04/password-management-vim-gnupg/。即语法如下:
Super Ecommerce{{{
user: foobar
pass: g0d
Comments{{{
birthday: 1/1/1911
first car: delorean
}}}
}}}
折叠已经与 {{{
和 }}}
一起使用,以防止肩冲浪。但是,当一个条目展开时,我也想用红色背景和红色前景文本隐藏密码,以继续防止扩展时的肩膀冲浪。
目前,我正在通过将密码包装在 (((
和 )))
块中来解决这个问题。这样,我可以控制隐藏哪些密码,哪些不隐藏。我的 Vim 解决这个问题的语法是:
set conceallevel=3
syntax region gpgpassPasswords start="\v\(\(\(" end="\v\)\)\)"
highlight link gpgpassPasswords Conceal
highlight gpgpassPasswords ctermbg=red ctermfg=red
我们的 "Super Ecommerce" 块看起来像:
Super Ecommerce{{{
user: foobar
pass: (((g0d)))
...
然后 (((g0d)))
将打印为红色背景上的红色前景文本,从而有效地隐藏了密码。
但是,我想我宁愿只隐藏 ^\s*pass:\s*
之后的所有密码而不是 (((
和 )))
。不幸的是,我似乎无法获得仅隐藏密码而不隐藏其他所有内容的正确语法。
如何只隐藏没有额外区域字符的密码?
使用\zs
(匹配开始)和\ze
(匹配结束)限制匹配区域:
:syntax match gpgpassPasswords /^\s*pass:\s*\zs.*\ze$/
我认为以下应该可行:
syn match MyPassword /\%(^\s*pass:\s*\)\@<=\S\+/ conceal cchar=*
setl conceallevel=2 concealcursor=nv
但这在一定程度上取决于您的其他语法规则。使用较新的 Vims,您也可以只使用 matchadd()
函数调用。
我正在为 PGP 加密密码创建一个 Vim 语法高亮文件,格式如下 post:http://pig-monkey.com/2013/04/password-management-vim-gnupg/。即语法如下:
Super Ecommerce{{{
user: foobar
pass: g0d
Comments{{{
birthday: 1/1/1911
first car: delorean
}}}
}}}
折叠已经与 {{{
和 }}}
一起使用,以防止肩冲浪。但是,当一个条目展开时,我也想用红色背景和红色前景文本隐藏密码,以继续防止扩展时的肩膀冲浪。
目前,我正在通过将密码包装在 (((
和 )))
块中来解决这个问题。这样,我可以控制隐藏哪些密码,哪些不隐藏。我的 Vim 解决这个问题的语法是:
set conceallevel=3
syntax region gpgpassPasswords start="\v\(\(\(" end="\v\)\)\)"
highlight link gpgpassPasswords Conceal
highlight gpgpassPasswords ctermbg=red ctermfg=red
我们的 "Super Ecommerce" 块看起来像:
Super Ecommerce{{{
user: foobar
pass: (((g0d)))
...
然后 (((g0d)))
将打印为红色背景上的红色前景文本,从而有效地隐藏了密码。
但是,我想我宁愿只隐藏 ^\s*pass:\s*
之后的所有密码而不是 (((
和 )))
。不幸的是,我似乎无法获得仅隐藏密码而不隐藏其他所有内容的正确语法。
如何只隐藏没有额外区域字符的密码?
使用\zs
(匹配开始)和\ze
(匹配结束)限制匹配区域:
:syntax match gpgpassPasswords /^\s*pass:\s*\zs.*\ze$/
我认为以下应该可行:
syn match MyPassword /\%(^\s*pass:\s*\)\@<=\S\+/ conceal cchar=*
setl conceallevel=2 concealcursor=nv
但这在一定程度上取决于您的其他语法规则。使用较新的 Vims,您也可以只使用 matchadd()
函数调用。