前言
Vim 雖然有內建 :sort
指令,不過它只能以「行」為單位進行排序,光靠它並無法做到連帶整個區塊,例如:函數、成員方法、類別等進行排序。
解決方案 I (推薦)
使用現成外掛 obreitwi/vim-sort-folds
。
:set foldmethod=syntax
zm
Use -- VISUAL LINE --
to select the foldings need to be sorted.
<Leader>sf
zr
解決方案 II (手動)
搭配 :g
指令。先將區塊內容隱藏,剩下標頭一行即可利用 :sort
指令進行排序。最後再將隱藏的內容部分還原,即可實現對整個區塊連帶內容一起排序的效果。
指令
Before
void printB() {
std::cout << "B";
}
void printA() {
std::cout << "A";
}
操作
:g/^void print[AB]() {/,/^}/ s/$\n/\n
:'<,'>sort
:%s/^@/\r/g
◎注: ^@
= Ctrl+@
After
void printA() {
std::cout << "A";
}
void printB() {
std::cout << "B";
}