3月23日,法军非洲兵千余人及越南教民一批,由兴化渡红河,进攻临洮东南的山围社。在此防守的中越军民联合部队坚守地营,沉着应战。待敌接近时,枪炮齐鸣,并引发地雷,打退了进攻之敌。法军连续几次冲击,守军均依托工事,发挥近战火力,顽强奋战,毙伤不少敌人,守住了阵地。傍晚,正当法军进退维谷之时,与刘永福有联系的越南义军在村落四周遍插黑旗,用中国话齐声喊杀。法军以为突遭黑旗军包围,惊魂落魄,纷纷脱掉军服,乘夜从附近的河沟泗水,偷偷向越池方向逃窜。守军没有发觉,未予追击。
中越军民在临洮附近大败法军,毙伤敌军数百人,缴获法军红白衣裤、军帽等千余件。这是西线战场上取得的一次较大胜利。这次战斗的主要特点,是中越两国军民紧密配合,英勇战斗。另外,守军充分利用地形,构筑了比较适应当时作战情况的野战工事——地营,减煞了敌人的火力优势,弥补了自己火力不强的弱点,也是这次取胜的一个重要原因。
唐景崧对滇军构筑地营一事.作了相当详细的记载,这表明滇军在这方面有其独到之处,至少在他看来,如此完善的地营是当时战争中的新鲜事物。
“野战筑城工事具有和军队同样悠久的历史。”“兵力上处于劣势的军队,可借以成功地抵抗优势敌人,因而野战工事能对战局的结果起重大影响。”随着野战炮兵的大量使用和火炮射速与弹丸威力的加大,仅凭地面工事远远不能适应战争的需要,从而迫使人们向地下发展,构筑既能防护自己、又能攻击敌人的地下工事。地营的出现和发展,正是战争发展的必然产物。在中法战争中,滇军和黑旗军一直重视这一作战手段,“扎营之处,兵卒均荷锄铲刀锯之类,掘地锯木”,修筑基本上相当于今日有被覆的野战掩体的地营,在各次战斗中都收到了较好的效果。
(二)镇南关大捷
在潘鼎新不战而逃、东线法军直逼广西国门的情况下,龙州等地商民惊徙,游勇肆掠,难民蔽江而下,广西全省大震,形势十分严重。清廷以广西关外各军迭次失利,于2月17日电令冯子材帮办广西关外军务。冯子材虽已年近七旬,但“久任广西提督,三次出关,威惠素著,得桂、越人心”。由于潘鼎新远离前线,前敌将领公推冯为东线总指挥。冯子材决心“保关克谅”,并相机收复北圻各城。他一面调整部署,令部下赶修工事,一面整顿军纪,安定民心,迅速稳定和改善了防御态势。
与此同时,清政府通过总税务司赫德的私人代表金登干在巴黎与法国政府之间的秘密谈判正在加紧进行。由于法军在北圻东线占领谅山之后,接着于3月3日在西线解了宣光之围,法国政府急于趁胜迫和,以缓和国内人民对旷日持久的战争所表现的强烈不满。为了保证它在和议中处于更加有利的地位,法国政府要求东线法军继续发展进攻。波里也随即于3月16日电告尼格里:现在正与中国进行谈判,若能对龙州有所动作,派北非骑兵前去,将大有裨益。你看有什么办法,可以使中国人相信我们不久就要向龙州进攻。接着,波里也向谅山方面增派援军。尼格里认为威胁龙州是“玩一种危险的把戏”,但还是积极备战,待命行动。
根据当面敌情和广西中越边境的地形条件,冯子材经过反复勘察,选定关前隘(今隘口南)附近的有利地形构筑防御阵地。关前隘在镇南关内约八华里处,东西两面高山夹峙,中间为宽约二华里的隘口。东面的大青山高八百余米,向南倾斜与小青山相连,再南为马鞍山,一直延伸到镇南关的东面。西面的凤尾山高六百余米,同样向南倾斜,直至龙门关(一东西向峡口,有小路可通扣波),然后经一座大石山延伸到镇南关的西面。关前隘南面的谷地宽二华里多,谷地南端有几座小石山,往南直至镇南关都是起伏不平的山丘,统称横坡岭。冯子材命令部队在关前隘附近筑起一连土石长墙(长三里多,高约七尺,宽约四尺),横跨东西两岭之间,墙外挖掘四尺宽的深堑,以利坚守,并在东西岭上修筑堡垒多座,构成一个较完整的山地防御阵地体系。
在兵力部署上,冯子材亲率所部冯军担任关前隘正面防御,扼守长墙和山险要地;王孝棋部八个营屯于冯军后面半华里处,作为正面防御的第二梯队,王德榜所部湘军十个营屯于油隘,保障入关旁路的安全,并相机袭击敌后,苏元春及陈嘉所部桂军十八营屯于幕府(关前隘之后五华里),作为总预备队,魏纲所部鄂军八个营驻平而关,控制由封(今七溪)至龙州的水道。此外,蒋宗汊部(杨玉科阵亡后,所部由蒋统领)及方友升部共十余营屯于凭祥,潘鼎新率淮军五营屯于海村,以镇后路。加上驻龙州、新街等处部队,东线清军总兵力约达八十余营。
3月9日,尼格里派北非骑兵和越伪军各一部,企图由文渊经扣波进占艽封、牧马,绕出镇南关之北,摆出一副威胁龙州、切断唐景崧部(当时已由宣光撤至占化)和马盛治部(驻新街)归路的架势。冯子材根据越南人民提供的情报,立即派驻龙州的冯军五个营前往扣波,苏元春则率桂军暨魏纲部前往艽封。3月13日,法军进至艽封,见清军已先期到达,便掉头南撤。到达扣波的冯军奋力拦击,法军败回文渊。尔后,苏元春部仍回幕府,魏纲部八营和冯军五营则分别留守芄封、扣波。
3月21日,冯子材为打乱敌人的进攻部署,不顾潘鼎新等人的阻挠,决定先发制敌,毅然率王孝祺部出关夜袭法军前哨据点文渊,一度冲入街心,毙伤不少敌人,并毁炮台两座后主动撤回,取得了较大胜利。由于清军的主动出击,尼格里感到自己已处于被动地位,为争取主动,他不待援军到齐,决定提前发起进攻。
3月23日晨,法军第二旅主力一千余人趁大雾偷偷进入镇南关。上午10时30分,大雾开始消散,法军便分两路进攻:主力沿东岭前进;另一路沿关前隘谷地前进,企图在主力夺取大青山顶峰大堡之后,两路前后夹击,攻占关前隘清军阵地。此外,法军一部近千人配置于镇南关东南高地,作为预备队,并向油隘方向担任警戒。冯子材立即商请驻于幕府的苏元春部前来接应,又通知王德榜部从侧后截击敌人。冯子材自率所部和王孝祺部奋力迎击当面之敌。法军在猛烈炮火掩护下,经过几小时的拚死争夺,占领了尚未完工的东岭五座堡垒(分别构筑于小青山五个相连的山峰上)中的三座。冯子材见形势逐渐危急,激昂地高呼:“法再入关,有何面目见粤民何以生为!”冯、王两部将士在爱国热情激励下,誓与长墙共存亡,个个奋不顾身,英勇抗击,阻止了敌人的前进。下午4时许,苏元春、陈嘉等率部自幕府赶来增援。不久,蒋宗汉、方友升部也闻讯赶来。各部奋力抵抗,战斗甚为激烈,彼此势均力敌,死伤相当。当天,王德榜部自油隘出击法军右翼,牵制了敌预备队的机动,并一度切断敌人运送军火,粮食的交通线,有力地配合了东岭的战斗。入夜,清军进一步调整部署,由苏元春部协助冯军守长墙,王孝祺部守西岭,陈嘉部守东岭,蒋宗汉、方友升部扼守大青山顶峰。冯子材还派人持大令飞调驻扣波的五营冯军前来抄袭法军左翼。附近群众连夜挑水送饭,赶运弹药。将士们磨刀擦枪,修补工事,严阵以待。经过一番整顿,前线军民更加同仇敌忾,决心与侵略者血战到底。
3月24日晨,尼格里指挥法军分三路再次发起冲击。在侥幸取胜的心理支配下,尼格里首先派其副手陆军中校爱尔明加率兵一部,利用大雾偷偷向大青山顶前进,企图突然夺取大堡,控制东岭制高点,但由于地形险峻,道路难行,法军偷袭未逞,不得已沿原路退回。上午11时许,尼格里见山顶久无动静,以为偷袭部队已不战而占领了山顶大堡,便命令以猛烈炮火轰击清军正面防御工事,企图掩护沿谷地前进的法军接近长墙,配合东岭法军一举突破关前隘阵地。冯子材立即传令各部统领:“有退者,无论何将遇何军,皆诛之!”并于各路设卡,堵截逃兵。当敌人接近长墙时,冯子材持矛大呼,率领两个儿子跃出长墙,冲入敌阵,展开白刃格斗。全军将士见主帅身先士卒,一齐大开栅门,向敌人冲去。当地人民群众和部分散兵游勇也主动前来助战,“伺便随处狙击”。中午,从扣波赶来增援的五营冯军在游击杨瑞山、都司麦凤标等率领下,由摩沙村(龙门关西口)冲进龙门关,突然出现在法军侧后,给进攻之敌以意想不到的打击。经过一场激烈的殊死战斗,中路法军狼狈退回谷地。在关前隘长墙激战的同时,陈嘉、蒋宗汉相继率部反复争夺被法军占领的东岭三座堡垒。直到傍晚,王德榜部在击溃敌之增援部队及消灭其运输队后,从关外夹击法军右侧后,配合东岭守军夺回了全部敌占堡垒。这时,王孝祺部也已击退沿西岭进攻之敌,并由西岭包抄敌后。法军三面被围,伤亡甚众,后援不及,弹药将尽,开始全线溃散。于是,尼格里不得不下令撤退,法军丢下数百具尸体,狼狈逃回文渊。
冯子材指挥东线清军取得了镇南关大捷,共毙伤敌军精锐近千人,缴获大批枪炮、干粮,大大鼓舞了中越两国军民的斗志,沉重打击了法国侵略者的气焰。这是中法战争中关系全局的一战。它不仅使北圻东线反攻转败为胜,而且使整个战局发生了根本性的变化。“法人自谓入中国以来,从未受此大创。”3月27日晚,法军惨败的消息传到巴黎,立刻在法国统治阶级中引起巨大的震动和恐慌。他们害怕因此而动摇法国在远东初步建立起来的殖民统治,因而群起抨击茹费理的远东政策。法国人民也纷起反对茹费理政府的殖民战争。3月29日,法军在谅山惨败的消息接踵传至巴黎,茹费理内阁随即于3月31日在一片责骂声中垮台了。
东线法军经镇南关惨败之后,人数不满二千,在文渊稍事休整,主力即仓卒撤至谅山,和已经到达那里的援兵会合,总数增加到四千五百人左右。冯子材为了不给溃败之敌以喘息机会,于3月26日亲率所部及王孝棋部出关进攻文渊,并通知王德榜部由小路抄袭敌之右翼。文渊守敌倾巢出战,清军“分路四面环攻,枪炮雨密”。战不多时,守敌头目中弹落马,余众溃逃,清军立将文渊收复。
这时,越南义军已在谅山通往那阳、屯梅等交通线上加紧袭扰,给法军后方以很大威胁。尼格里企图坚守谅山,等待更多援兵到达后再次进犯镇南关,做了如下部署:主力扼守驱驴北面的一个高地,以确保驱驴,屏蔽谅山;一部兵力配置于淇江(今奇穷河)南岸,分守通向谷松、屯梅的交通要道;将老弱残兵编成“城堡班”,驻守谅山城垣碉堡。
冯子材鉴于谅山为越南北部军事要地,“若不急先攻取,实难成破竹之势”。并且认为,法军连战皆败,心胆已寒,“与其明攻多损士卒,不如暗取更易见功”。因此,与苏元春等密商,“以正兵明攻驱驴,出奇兵暗取谅山”。3月27日,冯子材派杨瑞山率所部绕道而进,乘夜渡过淇江,于次日黄昏潜至谅山,散伏城外各处。
3月28日,冯子材、苏元春、王德榜、王孝祺各部次第向前挺进,分三路逼攻驱驴:冯子材、苏元春率主力进攻正面;王孝祺部和冯军一部进攻西面,王德榜部进攻东面。法军依托驱驴北面高地的坚固工事,负隅顽抗,阻止了清军的进攻。尼格里鉴于其左翼和正面阵地工事坚固,而东面地形较难防守,决定由爱尔明加率军一部,向东面的王德榜部发起反击。下午2时许,冯、苏两部趁敌人调动兵力,正面防御力量有所减弱之机,再次发起猛烈攻击。激战中,尼格里胸部中弹重伤,接替指挥的爱尔明加随即下令向淇江南岸撤退。凉山守敌在慌乱中砍断浮桥,致使部分法军在溃逃中落水溺死。之后,法军退入凉山城,并立即部署分两路向南撤退。
3月29日拂晓,清军主力徒涉淇江,向谅山挺进。在此之前,埋伏于城外的杨瑞山部乘法军熟睡之机,突然发起攻击。城中法军仓皇应战,一片混乱。杨瑞山等“督率各营员弁、勇丁,蚁附而上,劈开城门,兵刃交下”。法军死伤累累,残部向南逃窜。清军追击二十余里,并边进边搜山,从山谷中俘获不少敌人。
清军在克复谅山的过程中,共毙伤法军近千人,并缴获大量军械物资,仪杨瑞山部就夺获大小火炮三十余门。
谅山既克,清军乘胜分东西两路向南追击。3月31日,东路陈嘉部及王德榜部攻克谷松,西路冯军一部克复屯梅,进逼郎甲。法军犹如惊弓之鸟,一口气逃到郎甲、船头一带。
在这大好形势鼓舞下,越南义军的活动更加频繁。北宁总督黄廷经集合各路义民二万余人,“建冯军旗号,自愿挑浆饭,作向导,随军助剿,或分道进攻”。河内、海阳、太原、西贡等地人民也纷纷酝酿起义,盼望清军早日挥戈南下,赶走法国侵略者。冯子材决定于4月中旬亲率东线全军进攻北宁、河内;唐景崧部也准备出牧马,攻太原;广东方面,准备派兵出钦州,沿北圻东海岸进攻广安;会办云南军务鲍超所部三十余营生力军正向龙州前进,随时准备入越,西线滇军也已克复广成等地,正向兴化发展进攻。但就在这时,清廷下达了妥协求和的停战撤兵令,彻底破坏丁前线军民乘胜进军的作战计划。