Cara paling efisien untuk mengganti seluruh buffer?

10

Saat ini, saya memiliki dua metode serupa untuk mengganti seluruh buffer dengan beberapa teks lain (misalnya di clipboard).

Metode # 1:

  1. menghapus semua baris: :%d.

  2. rekatkan teks: "+P(atau serupa :put+:).

Metode # 2:

  1. visual pilih semua lini: ggVG.

  2. menempelkan teks: "+P.

Namun sepertinya saya tidak bisa menemukan cara satu perintah api untuk melakukan itu. Yang paling dekat yang saya temukan adalah :changeperintah. Tetapi tampaknya tidak berfungsi dengan baik dengan register. Tentu saja saya dapat membuat beberapa fungsi dan / atau memetakan kunci untuk melakukan itu. Tetapi sebelum saya dapat membuat semua penyesuaian ini, saya ingin memastikan:

Apakah ada beberapa perintah bawaan untuk mengganti berbagai baris dengan beberapa teks lainnya? Seperti, Anda bisa :%replace+mengganti seluruh buffer dengan teks di clipboard?

Naitree
sumber
2
Saya tidak tahu apa-apa dari atas kepala saya, tetapi jika Anda sering melakukan ini, mengapa tidak membuat pemetaan / perintah?
Matt Boehm
5
Hmm, 1,$s/\_./\=@+bukan solusi: P, :%d|put+lebih dekat, tetapi tidak cukup di sana.
Runium
1
Saya lupa tanda bintang setelah titik ... 1,$s/\_.*/\=@+, di mana \_.cocok dengan karakter apa pun termasuk baris baru.
Runium
2
Apakah Anda harus menggunakan kembali buffer, atau apakah dapat memulai buffer baru?
200_sukses
3
Saya pikir Sukminder :%d|put+cocok dengan tagihan. Ini pendek dan mudah diingat. Perintah lainnya terlalu misterius untuk diingat dan diketik dengan benar.
Lie Ryan

Jawaban:

2

Anda dapat melakukannya ggvG<CTRL-G>untuk memilih seluruh buffer secara visual dan masuk Select-mode. Ini adalah cara termudah untuk mengganti buffer dengan teks yang Anda rencanakan untuk diketik. Anda bahkan dapat membuat Select-modepemetaan dengan :smapitu memecahkan masalah Anda.

Aaron Massey
sumber
0

Salah satu cara untuk mengganti seluruh buffer dengan clipboard Anda dapat melalui perintah eksternal, misalnya:

:%!pbpaste
:%!echo my_text

Lihat juga: berbagi clipboard Mac OS X

Atau dengan menggunakan substitusi:

:%s/\_.*/\=@+/
:%s/\_.*/my text/

Atau gunakan :%d|put+(seperti yang sudah disarankan dalam komentar).

kenorb
sumber