Pertanyaan pipa non-destruktif di vim?


Apakah ada cara untuk menyalurkan teks yang dipilih melalui perintah eksternal di vim, tetapi tidak untuk mengganti teks yang dipilih dengan output? Kadang-kadang saya ingin menyalin sesuatu di buffer vim ke X clipboard, jadi saya menggunakan sesuatu seperti %!xclip - tetapi kemudian saya harus "membatalkan" perintah itu untuk mendapatkan teks kembali karena xclip tidak mengembalikan apa-apa. Pendek menulis skrip pembungkus di sekitar xclip yang juga menggemakan kembali teks, apakah ada cara yang lebih baik untuk melakukan ini?

Terima kasih!


3
2018-05-31 19:30


asal


Jika Anda menggunakan gvim Anda dapat menyalin langsung ke X clipboard dengan daftar khusus +. "+yy salin baris saat ini ke clipboard. Anda juga dapat menggunakan pilihan visual. - Keith


Jawaban:


Dari pada %!xclip menggunakan

%w !xclip

Perhatikan ruang antara w dan !. Lihat

:help :w_c

3
2018-05-31 19:51





Untuk menyalin ke clipboard, saya gunakan

"*y

Untuk lebih lanjut tentang perbedaan antara keduanya "* dan "+, Anda akan ingin memeriksanya :h x11-selection. Bagi saya, yang berikut ini tampaknya relevan:

Xterm, secara default, selalu menulis pilihan yang terlihat baik ke PRIMARY dan   CUT_BUFFER0. Ketika ditempel, itu menggunakan PRIMARY jika ini tersedia, atau yang lain   jatuh kembali ke CUT_BUFFER0. Untuk alasan ini, saat memotong dan menempel   antara Vim dan xterm, Anda harus menggunakan "* register. Xterm tidak digunakan   CLIPBOARD, sehingga "+ tidak berfungsi dengan xterm.

Jadi saya akan menempel "* dari pada "+ bahwa peth disebutkan, tetapi Anda mungkin sebaiknya menguji yang mana yang paling cocok untuk pola penggunaan Anda.


1
2018-06-10 11:54



Ya, * daftar lebih dekat dengan pertanyaan sebagai xclip menggunakan PRIMARY seleksi secara default juga. - peth