cari

Rumah  >  Soal Jawab  >  teks badan

vim pemadanan berbilang baris padam ke permulaan baris

Penerangan masalah
Fail yang lebih besar perlu diproses dan kandungan sebelum rentetan yang sepadan dalam setiap baris dipadamkan. Format kandungan fail adalah seperti berikut:


aaa dd kk segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
12jk od=kk segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
pppp=dd bbo;=9as segmentfault=0876-oj87-3pac zifu=ka neirong=xia

Dijangkakan kandungan sebelum segmentfault muncul buat kali pertama dalam setiap baris boleh dipadamkan ke permulaan baris Hasil pemprosesan yang dijangkakan adalah seperti berikut


segmentfault=1098-0987-3jlc ok=okj hello=0cvqa
segmentfault=1jj8-lk87-oplc suiji=che shachu=keng
segmentfault=0876-oj87-3pac zifu=ka neirong=xia

Penyelesaian semasa
menggunakan makro untuk melaksanakan

qa    ---开启宏录制
/resourceId ---随意操作
d0               ---随意操作,删除至行首
j                  ---随意操作,跳转到下一行
q     ---退出宏
1000000@a ---执行1000000次

Kelemahan: kecekapan rendah, sangat memakan masa

Penyelesaian yang dijangkakan
Nantikan penyuntingan lajur langsung (ctrl + v) untuk memadamkan kedudukan padanan setiap baris dengan permulaan baris.
Bagaimana untuk mencapainya?

ringa_leeringa_lee2778 hari yang lalu664

membalas semua(3)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 16:36:34

    Cuba penggantian biasa dan pengeditan lajur kata kunci anda berada dalam kedudukan yang berbeza dan tidak boleh diedit secara langsung

    :%s/^.*segmentfault/segmentfault/g

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 16:36:34

    @ixx Ideanya betul, ungkapan biasa
    tetapi ada penyelesaian yang lebih mudah

    :%s/^.*\zesegmentfault//g

    ze Tandai mod padanan tamat

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 16:36:34

    Saya rasa pengarang soalan ingin menggunakan mod lajur vim (Ctrl-v) dan kemudian pilih berbilang baris untuk memadankan bahagian sebelum segmen perkataan.
    Tetapi ia tidak berfungsi, kerana ia tidak boleh dilakukan
    1) Dalam mod lajur, pemadanan lebih baik dilakukan pada permulaan atau penghujung baris, membentuk blok padanan tidak teratur;
    2) S dari awal baris ke segmen dalam baris pertama ialah 3 W, manakala s dari baris ke-2 dan ke-3 ke segmen ialah 2 W. Ini bukan mudah untuk dilakukan sekaligus. (Atas sebab yang sama, menggantikan W dengan w juga tidak akan berfungsi)

    Mod lajur lebih sesuai untuk diproses jika teks disusun dengan kemas atau boleh dengan mudah diletakkan .

    ==========
    Jawapan lain mengatakan bahawa menggunakan ungkapan biasa untuk memadankan dan menggantikan adalah sangat berguna.

    balas
    0
  • Batalbalas