
In meiner .vimrc liste ich meine Vundle-Pakete wie folgt auf:
cat ~/.vimrc
...
Bundle 'Raimondi/delimitMate'
Bundle 'kien/ctrlp.vim'
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
...
Nun möchte ich meine Bundle-Liste schnell nach dem Bundle-Namen sortieren. Das funktioniert für Zeilen, in denen /
vorhanden ist, und zwar so:
cat ~/.vimrc | sort -t "/" -k2,2
...
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
Bundle 'kien/ctrlp.vim'
Bundle 'Raimondi/delimitMate'
...
Wie sortiere ich Zeilen, denen foo/
dem Bundle-Namen kein vorangestellt ist, wie es beispielsweise bei der Fall ist Bundle 'matchit.zip'
?
Antwort1
Du kannst immer ein „voranstellen“ ./
und es dann wieder entfernen. Beispiel:
sed "/\// ! s:^Bundle[[:space:]][[:space:]]*':&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed "s:\(^Bundle[[:space:]][[:space:]]*\)'\./:\1:"
Oder bei GNU sed
kann dies mit erweiterten regulären Ausdrücken etwas abgekürzt werden:
sed -r "/\// ! s:^Bundle[[:space:]]+:&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed -r "s:(^Bundle[[:space:]]+)'\./:\1:"
Oder verwenden Sie einfach ein einzelnes Leerzeichen, wenn Sie sicher sind, dass die Datei konsistent ist.