Cara menyalin konten tempel di editor vi

Saya mencoba menggunakan Ctrl + V untuk menyisipkan isi dalam dokumen editor vi, tapi Ctrl + V tidak ditafsirkan sebagai pasta.

Pertama, pastikan Anda berada dalam mode edit (tekan i). Kemudian anda bisa menempelkannya dengan Ctrl+Shift+V, jika Anda berada di emulator terminal seperti gnome-terminal (atau pilih" Tempel " dari menu klik kanan).

Anda juga dapat mengetik :set paste di vim sebelum Anda menempel untuk menonaktifkan indentasi otomatis, dll. Kemudian :set nopaste setelah Anda menempelkan konten.

Juga memeriksa pertanyaan ini on stackoverflow.com untuk informasi lebih lanjut.

Jika Anda ingin copy / paste baris di vim (sebagai lawan menyisipkan konten clipboard), Anda akan ingin memeriksa yank perintah. Berikut adalah lembar contekan itu mungkin bisa membantu.

Vi (dan Vim) bekerja sangat berbeda dibandingkan dengan editor teks biasa seperti Gedit. Ini juga memiliki kurva belajar yang cukup curam. Jika Anda ingin mempelajari beberapa perintah dasar, mulailah dengan tutorial interaktif ini.

Namun, untuk menjawab pertanyaan anda. Konten clipboard sistem dapat diakses melalui register plus. Jadi untuk menyisipkan sesuatu dari clipboard sistem Anda dapat, dari mode Normal, tekan: "+p (Tidak pada saat yang sama, tetapi satu demi satu).

Saya selalu menggunakan Shift+Insert ketika saya ingin menyisipkan teks ke terminal, bekerja di semua program terminal.

(Yang juga merupakan alasan mengapa saya tidak pernah mendapatkan laptop di mana Anda tidak dapat menekan Insert tanpa menekan tombol sekunder)

  1. Jika Anda ingin menyalin isi pasta dalam file yang sama, gunakan yank dan paste.

  2. Jika Anda ingin menyalin isi pasta lintas terminal, buka file pertama, tarik teks yang Anda inginkan, lalu buka file kedua Anda dalam vim (mis. :tabnew /path/to/second/file) dan tekan p untuk menempelkannya.

  3. Jika Anda ingin menyalin isi pasta dari vim ke program eksternal, Anda perlu mengakses clipboard sistem. Saya berasumsi Anda menggunakan Ubuntu. Versi GUI dari vim selalu memiliki dukungan clipboard, namun, jika Anda ingin menggunakan Vim dari terminal, Anda harus memeriksa dukungan X11-clipboard.

    Dari konsol, Ketik:

    $ vim --version | grep xterm

    Jika Anda menemukan - xterm_clipboard, Anda memiliki dua opsi:

    1) Kompilasi vim sendiri, dengan flag xterm_clipboard aktif

    2) Copot pemasangan vim, instal gvim (vim-gtk atau vim-gnome) sebagai gantinya. Anda dapat tetap menggunakan vim non-gui dengan memanggil vim dari terminal, dengan cara yang sama seperti yang anda lakukan sebelumnya. Kali ini ketika Anda memeriksa Anda harus menemukan + xterm_clipborad.

    Sekarang, ketika Anda menarik beberapa teks di + register di dalam editor vim Anda (misalnya " + yy), itu juga akan disalin ke clipboard sistem yang dapat Anda ambil dari program eksternal Anda seperti editor gedit, dengan menggunakan Ctrl+V.

  4. Jika Anda ingin menyalin isi pasta dari program eksternal ke vim, pertama Salin teks Anda ke clipboard sistem melalui Ctrl+C, lalu di editor vim sisipkan mode, klik tombol tengah mouse (biasanya roda) atau tekan Ctrl+Shift+V untuk menyisipkan.

    Ini adalah 4 dasar salin & amp; tempel kondisi yang terkait dengan vim. Saya harap ini membantu.

Gunakan tombol tengah mouse untuk menyisipkan teks yang telah disorot di tempat lain.

Ini berguna ketika Anda tidak memiliki akses ke clipboard sistem Anda (misalnya, dalam sesi SSH jarak jauh).

Harus dalam mode edit / insert untuk Vim.

Setelah Anda memasukkan vi, tekan i untuk masuk ke mode Sisipkan, klik kanan ke terminal, klik tempel.

Instruksi terperinci untuk menyalin / menempelkan baris teks dalam vi Menggunakan yank dan put

(gunakan yang berikut ini di mode perintah dari vi)

Salinan (YANK)

Untuk menyalin satu baris di vi:

  • Dalam mode perintah, pindahkan kursor ke baris yang perlu disalin dan ketik yy atau tipe Y

Untuk menyalin 2 baris dalam vi:

  • Dalam mode perintah, pindahkan kursor ke baris pertama yang perlu disalin dan ketik 2yy atau tipe 2Y

(demikian juga, sejumlah baris dapat disalin)

Untuk menyalin semua baris dari lokasi saat ini ke akhir file:

  • Dalam mode perintah, pindahkan kursor ke baris pertama yang perlu disalin dan ketik yG

Untuk menyalin semua teks dari lokasi saat ini ke akhir kata saat ini:

  • Dalam mode perintah, pindahkan kursor ke lokasi dari mana teks perlu disalin dan ketik yw

Untuk menyalin semua teks dari lokasi saat ini ke akhir baris:

  • Dalam mode perintah, pindahkan kursor ke lokasi dari mana teks perlu disalin dan ketik y$

Tempel (taruh)

Untuk menempelkan teks di papan klip - setelah lokasi kursor:

  • Dalam mode perintah, ketik p

Untuk menempelkan teks di papan klip - sebelum lokasi kursor:

  • Dalam mode perintah, ketik P

Dengan Vim 8 + di Linux atau Mac, Anda sekarang dapat menggunakan pasta asli OS (ctrl+shift+V di Linux, cmd+V pada Mac). Jangan tekan i untuk mode Insert.

Ini akan menyisipkan isi clipboard OS Anda, melestarikan ruang dan Tab tanpa menambahkan autoindenting. Ini setara dengan yang lama :set paste, i, ctrl+shift+V, esc, :set nopaste metode.

Anda bahkan tidak membutuhkan +clipboard atau +xterm_clipboard fitur vim diinstal lagi. Fitur ini disebut "bracketed paste". Untuk lebih jelasnya, lihat https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

Saya memiliki masalah, karena instalasi Vim saya tidak mendukung clipboard:

vim --version | grep clip-clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Saya menginstal vim-gnome (yang mendukung clipboard) dan kemudian memeriksa lagi:

vim --version | grep clipboard+clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Sekarang saya dapat menyalin dan menempel menggunakan "+y dan "+p masing-masing.

Pertama, periksa apakah vim Anda telah menginstal dukungan clipboard

:echo has('clipboard')

Jika mengembalikan 1 Anda memiliki dukungan clipboard

Untuk menyalin ke clipboard Anda harus memilih target Anda, katakanlah sebuah paragraf vip dan kemudian "+y, yang berarti register + salin bagian yang dipilih atau Anda cukup mengetik dalam mode normal: "+yip, yang berarti: Ke register + salin paragraf dalam.

Untuk menyisipkan dari clipboard dalam mode normal Anda dapat:

"+p

Pada mode insert anda cukup Ctrl-rCtrl-o+. Tha akan memasukkan konten clipboard Anda dan melestarikan semua lekukan seperti pada clipboard.

Jika Anda ingin menyalin seluruh buffer ke clipboard Anda dapat:

:%y+% ........ the whole filey ........ yank (copy)+ ........ to the clipboard

Untuk menyalin perintah terakhir ke clipboard:

:let @+=@:

Untuk menyalin pencarian terakhir ke clipboard:

 :let @+=@/

untuk menyalin dari tanda " A "sampai tanda" b " ke clipboard:

 :'a,'b y+

Untuk menguji setiap fungsi yang ada di clipboard Anda bisa

:@+    (and then type Enter):call FunctionName() (and then type Enter)

Untuk melihat apa yang ada di clipboard:

:reg +

Untuk menyalin semua baris yang memiliki "pola" ke clipboard Anda dapat:

:let @a="":[range]g/pattern/y A:let @+=@a:let @a="" ............ cleanses the register 'a':[range]g/pattern/y A   append to the register A every line with pattern:let @+=@a ............ copy register 'a' to the clipboard

Sekadar catatan, alasan utama menggunakan Vi adalah karena Vim tidak diinstal. Jika Anda telah menginstal Vim, mungkin ada baiknya menggunakannya sebagai gantinya. Sebenarnya tidak ada keuntungan bagi Vi selain itu sudah ada di setiap instalasi Unix. Cara terbaik untuk mempelajari Vim menurut saya adalah dengan membuka emulator terminal anda (bukan dari dalam Vim) dan ketik vimtutor itu akan membuat Anda mempercepat ke tempat yang dapat digunakan untuk Anda dalam waktu sekitar 45 menit.

  • 1 @ BenMordecai - saya sudah terbiasa dengan vi (dari yang lama), termasuk kemampuan sub-shell yang nyaman, tetapi membutuhkan penyegaran itu. Sedikit besar les. Pergi melalui itu seperti angin. Terima kasih.

Checkout jawaban saya di sini How to copy selected lines to clipboard in vim - Stack Overflow