首頁  >  問答  >  主體

vimscript - vim整段刪除或替換

有一段這樣的文字

As of initscripts-2012.07.5, the default format of /etc/rc.conf and
/etc/crypttab have changed. See their respective man pages for 
more details.

--BEGIN--
The purpose of this change is to unify the configuration of systemd
and initscripts. This will allow us to share code and documentation, 
and should make maintenance of initscripts simpler in the long-run.
--END--

The old format is still supported, so old config files should still
work unchanged.

希望能吧--BEGIN-- --END--之間的所有行都刪除掉,vim有直接的方法嗎?

另外一個附加的問題,就是已經有
--BEGIN-- 標誌了,如何能增加一段內容。

以上都是希望能腳本化的處理文字檔。


只是一個例子,--BEGIN--,--END--之間的行數不確定
# 手動標記這個,有點辛苦,實際文件不小,而且類似的結構
比較多.

ringa_leeringa_lee2606 天前675

全部回覆(5)我來回復

  • ringa_lee

    ringa_lee2017-05-16 16:43:00

    :g/--BEGIN--/,/--END--/d
    如果要同时删除前后的空行
    :g/--BEGIN--/-1,/--END--/+1d

    回覆
    0
  • 怪我咯

    怪我咯2017-05-16 16:43:00

    vim可以做到,

    在命令模式下:

    %s/--BEGIN--\_.*--END--//g
    

    其中的\_是关键,这个可以匹配多行。
    已经有--BEGIN--标识如何替换,这个也可以用上面的替换思路来做
    :%s/^--BEGIN--/&要替换的内容/g

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 16:43:00

    光标移至开始部分
    Esc v 进行view模式
    j 向下选中操作部分
    d 删除 x 剪切 两个都可以

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 16:43:00

    既然要脚本化,就用 sed 呗:

    sed -i '/--BEGIN--/,/--END--/d' files_to_modify
    

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 16:43:00

    ndd,n为要删除的行数。

    回覆
    0
  • 取消回覆