perpipaan non-destruktif dalam vim?

3

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

Terima kasih!

Patrick
sumber
Jika Anda menggunakan gvim, Anda dapat menyalin langsung ke clipboard X dengan register khusus +. "+yy menyalin baris saat ini ke papan klip. Anda juga dapat menggunakan pilihan visual.
Keith

Jawaban:

3

Dari pada %!xclip menggunakan

%w !xclip

Perhatikan jarak antar w dan !. Lihat

:help :w_c
garyjohn
sumber
1

Untuk menyalin ke clipboard, saya menggunakan

"*y

Untuk lebih lanjut tentang perbedaan antara "* dan "+, Anda ingin check out :h x11-selection. Bagi saya, yang berikut ini sepertinya relevan:

Xterm, secara default, selalu menulis pilihan yang terlihat oleh PRIMARY dan   CUT_BUFFER0. Ketika pasta, itu menggunakan PRIMARY jika ini tersedia, atau yang lain   jatuh kembali pada CUT_BUFFER0. Karena alasan ini, saat memotong dan menempel   antara Vim dan xterm, Anda harus menggunakan register "*. Xterm tidak digunakan   CLIPBOARD, dengan demikian "+ tidak bekerja dengan xterm.

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

MikeSep
sumber
1
Ya, * daftar lebih dekat ke pertanyaan xclip menggunakan PRIMARY pemilihan secara default juga.
peth