濮陽城頭的旗幟換了已經有半個月了。呂布沒有急著把主力全部壓進濮陽城內,他在城外的高地上紮了營,讓騎兵在城郊的官道上反覆巡弋,像在劃一道無形的邊界線。濮陽的城門白天開著,晚上關上,城內的秩序沒有大亂,但城外的氣氛已經變了。路上行人的影子被晨光拉長又縮短,官道兩側的田埂上偶爾有人站住往城頭那面旗看幾眼,又低頭繼續趕路,像是那些旗已經和他們無關了。
曹操在許昌接到濮陽被圍的訊息時,正在書房裡整理糧倉的賬冊。他聽完之後沒有立刻表態,把賬冊合上,擱在案几的一角。糧倉的賬頁還沒有合攏,邊角被風捲起又落下,像在反覆確認某個尚未定論的資料。程昱站在他身側,說了一句:“濮陽若失,兗州西線就全被呂布切開了。主公若要回援,現在就得動身,不能再等。”曹操站起來,走到窗前,望著窗外的暮色。天邊的雲層正在變厚,像是要下雨。他沒有轉身說:“傳令給曹仁,讓他帶著剛撤回來的部隊,隨我北上。”停頓了片刻,又補了一句,“荀彧守許昌,程昱隨軍。”
大軍在第二天清晨出城。曹操騎在馬上走在隊伍前方,沒有回頭看許昌的城牆。他的目光沿著官道向北延伸,落在那條通往濮陽的路上。曹仁的部隊跟在後面,剛從徐州撤回來,還沒有完全休整好,有人牽著韁繩的手還帶著傷,但沒有人掉隊。他們走了三天,沿途經過的縣城城門緊閉,像是已經提前知道他們會經過。曹操沒有下令進城,也沒有派人去詢問,他只是在馬上沉默地趕路,像是要把那段路程一口吞下去。
呂布在濮陽城外第三天的傍晚,收到了斥候的回報。曹操的主力已經過了延津,正在向濮陽方向推進。呂布聽完,沒有多說什麼,只是在營帳外面站了一會兒,望著南邊的天際線。暮色正在收攏,遠處的原野被漸暗的光線抹成一片均勻的灰藍色。他吩咐下去,讓營寨外圍的哨兵增加一倍,在官道兩側的高地上設幾個觀察點。張遼從帳中出來,在他身邊站定,說了一句:“曹操來得比預想快。”呂布說他知道,所以他現在也要動起來了。
當天夜裡,呂布沒有留在濮陽城外,他帶著三千騎兵往南移動了大約二十里,在官道旁的一處高地上停下來,等待曹操的部隊經過。他沒有下令紮營,讓騎兵保持警戒狀態,人和馬都在原地休息。夜深時風從南邊吹來,帶著遠處田野裡草木的氣息,像是有人在夜色的掩護下替他試探風向和流速。呂布沒有睡,他坐在馬鞍旁邊,靠著馬腿閉了一會兒眼睛,但沒有睡著。他聽見遠處有鳥被驚起的聲音,撲稜稜地飛過夜空,又落下了。
第二天午前,曹操的部隊出現在了官道上。走在最前面的是曹仁的騎兵,陣型緊湊,馬速均勻,一眼就能看出是打過仗的。後面是步兵,佇列整齊,隊伍中間有一輛沒有裝飾的舊馬車,呂布認出那是曹操的坐車,車輪壓過泥土時留下的印痕比尋常馬車更深。他看了片刻,然後站直身,翻身上馬,對身邊的張遼說了一句:“等他們過去一半,我們從側面切進去。”張遼沒有多問,轉身去傳令了。
曹仁的騎兵過去之後,步兵開始進入呂布選定的那段官道。他們的隊形比騎兵鬆散一些,前後之間的間距拉得比較大。呂布在高地上等到步兵佇列完全進入那段官道的範圍,才下令出擊。三千騎兵從高地上衝下來時,馬蹄聲像一陣從遠處逐漸逼近的悶雷,在最前排的曹軍步兵還來不及舉盾的時候,已經切入了佇列的腰部。他們沒有在官道上停留,也沒有停下來與曹軍步兵糾纏,只是沿著佇列的側面橫向切了一刀,帶走了上百人,然後在高地的另一側重新匯合。曹軍步兵被這一衝打亂了陣腳,前排的停了下來,後排的還在往前趕,隊伍在官道上擠成一團。
曹操在後面的馬車上聽到了前方的騷動,掀開車簾看了一眼,又放下了。他沒有下令加快速度,也沒有讓曹仁回頭接應。他只是坐在車裡,像是已經料到呂布會在半路上等他。他的手指擱在膝頭,沒有攥緊,也沒有鬆開。他知道呂布這麼做不是為了截住他,是想讓他慢下來,讓他帶著疲憊的部隊多走一段夜路,多耗幾個時辰。他越早趕到濮陽,呂布就越早退走。
當天下午,曹操的部隊在距離濮陽大約二十里處停了下來。他沒有讓部隊繼續前進,先讓曹仁帶人在官道兩側搜尋了一遍,確認沒有伏兵,才下令就地紮營。營寨扎得比往常更密,拒馬和壕溝的位置比平時推得更靠外,像是要把每一段空隙都壓緊。他走進帳中坐下來的那一刻,才把佩刀從腰間解下來,擱在案几上。
呂布沒有繼續騷擾。他在高地上駐紮了一整夜,隔著那片田野望著遠處的燈火,沒有再向前推進一步。濮陽的戰事在接下來的幾天裡持續拉鋸,雙方都在試探,都在等待對方先露出破綻,誰都沒有真正發力,像兩把還沒有完全出鞘的刀,刀身露出的那一段已經足夠讓對方看清它的刃口。風從田野上吹過來,帶著泥土和枯草的氣息,把營帳的布面吹得微微鼓起又落下,像是有人在遠處反覆翻著一封還沒有決定是否要拆開的信。呂布在營帳裡坐了一會兒,又站起來,走到門口,望著南邊的夜色,像在等一個尚未出現、但必然會出現的訊號。他知道曹操不會在濮陽城外消耗太久,也知道他也不會立刻離開濮陽,他要等曹操先退。風從曠野那邊吹過來,帶著馬匹和乾草的氣味,像是一道正在慢慢合攏的邊界線,在夜色中緩緩移向他腳下的土地。








