Salin / tempel Vimperator

23

Saya mencoba Vimperator . Saya terutama menginginkannya untuk scroll hjkl, dan saya suka sistem "petunjuknya" untuk tautan berikut. Kedua fitur ini benar-benar yang saya butuhkan; Kupikir.

Saya tidak keberatan dengan fitur-fitur lainnya, itu hanya kadang menghalangi saya.

Hal yang paling mengganggu saya adalah menyalin / menempel. Saya sudah terbiasa dengan Ctrl+ c/ Ctrl+ v, saya tidak keberatan menggunakan pintasan lain, tapi ..

:help yank menunjukkan bahwa menyalin teks yang dipilih dilakukan dengan Y, tetapi satu-satunya metode yang disebutkan untuk menempel adalah tombol tengah mouse!

Ini sangat konyol melawan semangat Vim!

Bagaimana saya bisa menempel di Vimperator tanpa menggunakan mouse?

Hasen
sumber
Jawaban dalam pertanyaan ini sudah kedaluwarsa (yang masuk akal sejak mereka berusia tujuh tahun) Jika Anda mendarat di sini dari google, ini bukan (pada hari ini) jawaban yang Anda cari
Arthur Ulfeldt

Jawaban:

15

Hal terbaik dan termudah yang dapat Anda lakukan adalah memetakan kembali kunci. Itu tidak sulit. Masukkan ini ke _vimperatorrc Anda (atau .vimperatorrc di Linux)

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>secara default dipetakan ke mode "Lewati berikutnya", yang berarti bahwa tombol berikutnya yang Anda tekan dikirim langsung ke Firefox, tanpa diproses dan dimakan oleh vimperator. Jadi pemetaan di atas cukup aktifkan mode "Lewati berikutnya" dan kirim pintasan masing-masing.

Bahkan ada plugin vimperator yang memperluas ini lebih jauh dan memetakan kembali semua pintasan jendela umum , sehingga berperilaku seperti yang diharapkan.

pengguna4126
sumber
3
untuk <Cv> (tempel) itu harus inoremap
hasen
diterima untuk tautan plugin! yang mengagumkan dan perbaikan masalah
Hasen
2
Sepertinya versi saat ini (3.8.1) mungkin membuat CC dan Cv melakukan salin dan tempel tingkat OS secara default ... Saya tidak dapat menemukan apa pun di changelogs, tetapi saya baru saja beralih dari Pentadactyl ke yang terbaru. Vimperator dan Cc dan Cv bekerja seperti yang saya inginkan.
driftcatcher
@hangtwenty tampaknya benar, jawabannya di sini sudah ketinggalan zaman
Arthur Ulfeldt
36

Saya terkejut tidak ada jawaban yang lebih akurat untuk pertanyaan ini. Tautan plugin jawaban yang dipilih memecahkan masalah OP, tetapi tidak ada yang benar-benar menjelaskan cara menempelkan sesuatu ke dalam bidang teks tanpa menggunakan mode passthrough (Cv).

Jika Anda berada dalam bidang teks dalam mode INSERT dan ingin menempelkan sesuatu, hal yang jelas dilakukan di vi-land adalah dengan menekan ESC dan p untuk menempelkan. Di vimperator, ini tidak berfungsi - ESC membawa Anda keluar dari mode INSERT sepenuhnya dan ke mode di mana Anda bekerja dengan halaman / tab secara keseluruhan.

Vimperator memecahkan ini dengan memiliki mode BASIC tambahan- TEXTAREA. Saat dalam mode TEXTAREA, Anda dapat menggunakan perintah yang didukung yang akan Anda gunakan di vi.

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

Dll

Ini tampaknya tidak didokumentasikan dengan baik - saya akhirnya mengira sebagian besar karena kesalahan. Ia bekerja sama di kotak teks multiline dan satu baris.

RevAaron
sumber
Terima kasih atas komentar ini. Ini adalah persis apa yang saya butuhkan untuk mendapatkan kepala bulat vimperator dan bidang formulir.
ZweiBlumen
@RevAaron ketika Anda memasuki mode TEXTAREA apakah ini seperti lingkungan VI tradisional dan sebagian besar kunci VI akan berfungsi untuk mengedit teks? Dan juga saya perhatikan (lagi-lagi secara tidak sengaja) ketika saya menekan "d" dan kemudian "s" atau "a" dalam mode TEXTAREA mengubah mode menjadi yang disebut VISUAL. Saya akan sangat menghargai jika Anda bisa memberi saya info tentang ini. atau bahkan jika Anda suka saya bisa mengajukannya sebagai pertanyaan maka Anda bisa menjawabnya maka orang lain akan menggunakannya.
Mehrad
13

Saat ini, vimperator memetakan kembali Ctrl + C (dari 'copy' ke 'cancel') dan Ctrl + V (dari 'paste' ke 'pass-through'). Di Linux, metode salin / tempel yang disukai adalah dengan tombol tengah mouse, jadi ini bukan masalah. Di Windows, ini adalah bencana antarmuka pengguna dan sangat perlu diperbaiki.

Ada tiga tempat yang dapat Anda salin: teks dari halaman Web, teks dari bidang formulir, dan teks dari aplikasi eksternal. Ada dua tempat yang bisa Anda salin: ke dalam bidang formulir, dan ke aplikasi eksternal. Bilah alamat dan perintah berfungsi seperti bidang formulir.

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

Pengguna biasa tidak akan menghafal tabel itu. Mereka tidak akan pernah mengetahuinya, karena itu tidak didokumentasikan secara eksplisit, dan mereka tidak akan membacanya meskipun itu. Sebagai gantinya, mereka akan menggunakan menu klik kanan, satu-satunya yang bekerja di mana-mana. Bahkan, beberapa minggu setelah saya mulai menggunakan Vimperator, saya mendapati diri saya melakukan hal itu, dalam aplikasi yang sama sekali tidak terkait, sesuatu yang belum pernah saya lakukan sebelumnya.

Kita perlu mengembalikan ^ C dan ^ V ke fungsi aslinya yang sah sebagai salin dan tempel, yang berarti memindahkan ^ C = cancel dan ^ V = pass-through hotkey. Sebenarnya, kedua hotkey ini unik untuk vimperator dan tidak muncul di vim. ^ V berarti 'blok visual' di vim, yang tidak berlaku di vimperator, jadi pass-through dapat dengan mudah ditetapkan ke beberapa kunci lain. Saya sarankan backslash dalam mode perintah dan ctrl + backslash di kedua mode perintah dan masukkan. Itu berarti ^ C. Saya pikir itu harus dipindahkan ke ^ S. Ini memiliki dua mnemonik yang baik: ini 'berhenti', dan itu juga hotkey Unix untuk XOFF, yang tidak berguna tetapi mirip secara semantik. ^ S saat ini "save page as" di vimperator, yang jarang digunakan dan masih dapat diakses dengan: save atau: saveas.

Membatalkan juga rusak; itu ^ Z, tapi ^ Z bukan mode pass-through dan tidak ada cara untuk membatalkan pengeditan dalam bidang formulir tanpa menggunakan mouse. Saya tidak melihat alasan untuk tidak memindahkannya ke hotkey lain, terutama karena ^ Z dalam vim berarti menangguhkan, yang sama sekali tidak terkait, dan tiba-tiba menemukan diri Anda dalam mode pass-through sangat membingungkan. Saya tidak bisa memikirkan hotkey non-arbitrary untuk mengubah ini, tapi ^ Z cukup sewenang-wenang, jadi hotkey yang tidak terpakai akan melakukan.

Soruce: http://www.mozdev.org/pipermail/vimperator/2008-October/002359.html

joe
sumber
2

Saya sudah mencari cara untuk melakukan ini untuk sementara waktu. Bagus Tetapi solusi noremap dari user4126 tidak cukup sempurna jika saya ingin menempelkan ke commandline atau ke dalam kotak teks seperti yang ditunjukkan joe. Jadi saya tweak dengan inoremap, dan cnoremap juga di http://charlieharvey.org.uk/page/vimperator_cut_and_paste . Sepertinya vnoremap tidak didukung.

Jadi, Anda dapat menempelkan ke baris perintah dan ke dalam kotak teks dengan menggunakan pintasan ctrl-v hanya sekali. Rekatkan yang berikut di .vimperatorrc Anda dan mulai ulang Firefox.

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>
Charlie
sumber
2

Saya tidak menemukan jawaban yang diberikan bermanfaat karena saya tidak dapat melihat Ctrl+ di cmana pun. Apa yang saya lakukan adalah menggunakan pintasan SecureCRT. Yaitu, untuk menyalin dari halaman:

Ctrl+Ins

Untuk menempel: Ctrl+ Vdua kali (seperti yang dikatakan seseorang dalam jawaban di tempat lain).

Peter Mortensen
sumber
Terima kasih tuan yang baik. Memetakan <cc> ke <c-ins> memecahkan masalah khusus saya tentang masalah ini.
Steve Vermeulen
1

Untuk jawaban singkat - ^ V ^ V (mis. Ctrl-V Ctrl-V)

Ctrl-V pertama melakukan "keystroke pass through". Ctrl-V kedua menempelkan teks. Inilah yang saya lakukan untuk sebagian besar bidang teks.

Jika Anda menggunakan mode vi untuk bidang teks multiline (atur noinsertmode), Anda juga dapat menempelkan menggunakan p - jadi jika saya ingin menempelkan URL tab lain ke dalam tag ini, saya dapat membuka tab itu, gunakan y dan kemudian kembali ke tab ini. Bilah bawah browser akan mengatakan - TEXTAREA - dan saya dapat menekan p untuk menempelkan URL.

Hamish Downer
sumber
0

Saya akan menyarankan untuk menggunakan

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

Karena jika Anda telah membuka editor teks eksternal, Cc sederhana di jendela FF akan mengakhiri editor eksternal dan Anda akan kehilangan segalanya.

BR

MaikoID
sumber