如何使用vim整理聊天記錄?
有一個聊天內容的文件大致如下:
我希望說把某人(例如張三)說的話全部縮進一下,變成如下
張三:
今天天氣不錯。
要不要一起去爬山。
李四:
好呀!
你想要去哪裡?
最好不要太遠。
張三:
去爬xxx山吧
-------------------
你要假設聊天內容比較長,不適合手工處理。
張三:
今天天氣不錯。
要不要一起去爬山。
李四:
好呀!
你想要去哪裡?
最好不要太遠。
張三:
去爬xxx山吧
另外,如果我想要讓默認右對齊(每行至多80個字元)呢? 效果如下
張三:|
今天天氣不錯。|
要不要一起去爬山。|
李四: |
好呀! |
你想要去哪裡? |
最好不要太遠。 |
張三: |
去爬xxx山吧 |
.
第一個很簡單,兩個 global 命令就夠了::silent g/張三/,/李四/-1 &>
注意加上 silent ,不然默認會有結果回饋,很煩的。
有個小問題就是,如果記錄中最後一組是「張三」,那麼最後一組會縮不了,所以要補一個命令:
:silent g/^張三/,$&>
第二個同樣簡單,不過要事先設一下 textwidth:
:se textwidth=80 "默認就是 80 個字元,不用設,如果你有其他需求,就設一下
張三相關的右對齊:
:silent g/張三/,/李四/-1 right
和上面的一樣,如果「張三」是最後一組,最後一組會對齊不了,補一個:
:silent g/^張三/,$ right
變成如下,感覺沒變!
難道我眼花了???。這個問題太適合perl來做了!!!!
k=9999;foreach{ if 張三 k=1; if 李四 k=0; if k=1空格空格空格 張三的內容else李四的內容}大致如此,自己去學下perl吧
如果非得Vim的話,我覺得需要用腳本以及函數,以及一個全局變數。推薦閱讀:
※如何在 Ubuntu 下正確顯示 vim-airline 的箭頭符號?
※為什麼比起 Emacs,更多人使用 vim?
※vim8發布有一年了,有沒有基於vim8新特性開發的黑科技插件?
※Linux裡面的vim做什麼用的?我在terminal裡面輸入vi進入vi編輯器,可是不知道這個編輯器能實現什麼功能?
※如何讓vim像網頁一樣按Ctrl+放大字型大小?