標籤:

如何使用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+放大字型大小?

TAG:Vim | vim腳本 |