在我的 .vimrc 中,我列出了我的 vundle 包,如下所示:
cat ~/.vimrc
...
Bundle 'Raimondi/delimitMate'
Bundle 'kien/ctrlp.vim'
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
...
现在,我想按捆绑包名称快速对捆绑包列表进行排序,这适用于/
存在的行,如下所示:
cat ~/.vimrc | sort -t "/" -k2,2
...
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
Bundle 'kien/ctrlp.vim'
Bundle 'Raimondi/delimitMate'
...
我如何对没有foo/
预先添加到捆绑包名称的行进行排序,例如 for 的情况Bundle 'matchit.zip'
?
答案1
您始终可以在前面添加 a ./
,然后再次将其删除。例如:
sed "/\// ! s:^Bundle[[:space:]][[:space:]]*':&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed "s:\(^Bundle[[:space:]][[:space:]]*\)'\./:\1:"
或者使用 GNU sed
,可以使用扩展正则表达式稍微缩短:
sed -r "/\// ! s:^Bundle[[:space:]]+:&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed -r "s:(^Bundle[[:space:]]+)'\./:\1:"
或者,如果您确定文件是一致的,则仅使用单个文字空格。