คัดลอก Vimperator / การวาง


23

ฉันพยายามออกVimperator ฉันต้องการเป็นส่วนใหญ่สำหรับการเลื่อน hjkl และฉันชอบระบบ "คำแนะนำ" สำหรับการติดตามลิงก์ คุณสมบัติทั้งสองนี้เป็นสิ่งที่ฉันต้องการจริงๆ ฉันคิด.

ฉันไม่สนใจคุณสมบัติอื่น ๆ บางครั้งมันก็เข้ามาหาฉัน

สิ่งที่ทำให้ฉันรำคาญที่สุดก็คือการคัดลอก / การวาง ฉันคุ้นเคยกับCtrl+ c/ Ctrl+ vฉันไม่รังเกียจที่จะใช้ทางลัดอื่น แต่ ..

:help yank ระบุว่าการคัดลอกข้อความที่เลือกเสร็จสิ้นด้วย Y แต่วิธีเดียวที่กล่าวถึงสำหรับการวางคือปุ่มกลางของเมาส์!

นี่มันช่างเย้ยหยันต่อวิญญาณของ Vim!

ฉันจะวาง Vimperator โดยไม่ใช้เมาส์ได้อย่างไร


คำตอบในคำถามนี้ล้าสมัย (ซึ่งสมเหตุสมผลแล้วตั้งแต่อายุเจ็ดขวบ) หากคุณมาที่นี่จาก google คำตอบเหล่านี้ไม่ใช่ (ณ วันนี้) คำตอบที่คุณต้องการ
Arthur Ulfeldt

คำตอบ:


15

สิ่งที่ดีที่สุดและง่ายที่สุดที่คุณสามารถทำได้คือทำการแมปกุญแจ มันไม่ยาก วางสิ่งนี้ลงใน _vimperatorrc ของคุณ (หรือ. vimperatorrc ใน Linux)

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

<C-v>โดยค่าเริ่มต้นจะถูกแมปไปที่โหมด "ส่งต่อ" ซึ่งหมายความว่าปุ่มถัดไปที่คุณกดจะถูกส่งโดยตรงไปยัง Firefox โดยไม่ต้องดำเนินการและกินโดย vimperator ดังนั้นการแมปข้างต้นเพียงเปิดใช้งานโหมด "ส่งต่อไป" และส่งทางลัดตามลำดับ

มีแม้กระทั่งปลั๊กอิน vimperator ที่ขยายสิ่งนี้ให้กว้างยิ่งขึ้นและทำการแมปช็อตคัตหน้าต่างทางลัดทั่วไปอีกครั้ง


3
สำหรับ <Cv> (วาง) ควรเป็น inoremap
hasen

ยอมรับสำหรับลิงก์ปลั๊กอิน! ซึ่งเป็นที่น่ากลัวและช่วยแก้ไขปัญหา
Hasen

2
ดูเหมือนว่ารุ่นปัจจุบัน (3.8.1) อาจมี Cc และ Cv ที่ทำสำเนาและวางระดับระบบปฏิบัติการโดยค่าเริ่มต้น ... ฉันไม่สามารถหาอะไรเกี่ยวกับมันในการเปลี่ยนแปลง แต่ฉันเพิ่งเปลี่ยนจาก Pentadactyl เป็นล่าสุด Vimperator และ Cc และ Cv ทำงานเหมือนที่ฉันต้องการ
Driftcatcher

@hangtwenty ดูเหมือนจะถูกต้องคำตอบที่นี่ตอนนี้ล้าสมัย
Arthur Ulfeldt

36

ฉันประหลาดใจที่ไม่มีคำตอบที่ถูกต้องสำหรับคำถามนี้ ลิงก์ปลั๊กอินของคำตอบที่เลือกแก้ไขปัญหาของ OP แต่ไม่มีใครอธิบายวิธีการวางบางอย่างลงในฟิลด์ข้อความโดยไม่ต้องใช้โหมด passthrough (Cv)

หากคุณอยู่ในฟิลด์ข้อความในโหมด INSERT และต้องการวางบางสิ่งสิ่งที่ชัดเจนที่ต้องทำใน vi-land คือกด ESC และ p เพื่อวาง ใน vimperator การทำงานนี้ไม่ได้ช่วยให้คุณออกจากโหมด INSERT โดยสมบูรณ์และเข้าสู่โหมดที่คุณทำงานกับหน้า / แท็บโดยรวม

Vimperator แก้ปัญหานี้โดยเพิ่มโหมดพื้นฐาน - TEXTAREA เมื่ออยู่ในโหมด TEXTAREA คุณสามารถใช้คำสั่งที่รองรับที่คุณใช้ใน vi

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

เป็นต้น

สิ่งนี้ดูเหมือนจะไม่ได้รับการบันทึกไว้เป็นอย่างดี - ฉันคิดว่าส่วนใหญ่เกิดจากความผิดพลาด มันทำงานได้เหมือนกันในกล่องข้อความหลายบรรทัดและบรรทัดเดียว


ขอบคุณสำหรับความคิดเห็นนี้ นี่คือสิ่งที่ฉันต้องการเพื่อรับเฮดเดอร์ตัวกลมและฟิลด์แบบฟอร์ม
ZweiBlumen

@RevAaron เมื่อคุณเข้าสู่โหมด TEXTAREA มันเป็นแบบ VI envronment แบบดั้งเดิมและปุ่ม VI ส่วนใหญ่จะใช้สำหรับแก้ไขข้อความได้หรือไม่? และฉันก็สังเกตเห็น (อีกครั้งโดยบังเอิญ) เมื่อฉันกด "d" แล้ว "s" หรือ "a" ในโหมด TEXTAREA มันเปลี่ยนโหมดเป็นโหมดที่เรียกว่า VISUAL ฉันจะขอบคุณถ้าคุณสามารถให้ข้อมูลบางอย่างเกี่ยวกับเรื่องนี้ หรือแม้ว่าคุณจะชอบฉันสามารถวางเป็นคำถามจากนั้นคุณสามารถตอบได้แล้วคนอื่นจะใช้มัน
Mehrad

13

ตอนนี้ vimperator ทำการแมปใหม่ทั้ง Ctrl + C (จาก 'คัดลอก' ถึง 'ยกเลิก') และ Ctrl + V (จาก 'วาง' ถึง 'ผ่าน') บน Linux วิธีการคัดลอก / วางที่ต้องการคือปุ่มกลางของเมาส์ดังนั้นนี่ไม่ใช่ปัญหา บน Windows นี่เป็นหายนะของส่วนต่อประสานผู้ใช้และจำเป็นต้องได้รับการแก้ไขอย่างเลวร้าย

มีสามที่ที่คุณอาจคัดลอกมาจาก: ข้อความจากเว็บเพจข้อความจากเขตข้อมูลฟอร์มและข้อความจากแอปพลิเคชันภายนอก มีสองที่ที่คุณอาจคัดลอกไปยัง: ลงในฟิลด์ฟอร์มและลงในแอปพลิเคชันภายนอก ที่อยู่และแถบคำสั่งทำงานเหมือนกับเขตข้อมูลฟอร์ม

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

ผู้ใช้ทั่วไปจะไม่จดจำตารางนั้น พวกเขาจะไม่คิดออกเพราะมันไม่ได้บันทึกไว้อย่างชัดเจนและพวกเขาจะไม่อ่านแม้ว่ามันจะเป็น แต่พวกเขาจะใช้เมนูคลิกขวาสิ่งเดียวที่ใช้ได้ทุกที่ ในความเป็นจริงไม่กี่สัปดาห์หลังจากที่ฉันเริ่มใช้ Vimperator ฉันจับตัวเองทำอย่างนั้นในแอปพลิเคชันที่ไม่เกี่ยวข้องอย่างสมบูรณ์สิ่งที่ฉันไม่เคยทำมาก่อน

เราจำเป็นต้องเรียกคืน ^ C และ ^ V ไปยังฟังก์ชั่นดั้งเดิมที่ถูกต้องของพวกเขาเป็นคัดลอกและวางซึ่งหมายถึงการแทนที่ ^ C = ยกเลิกและ ^ V = คีย์ลัดผ่าน อันที่จริงแล้วฮ็อตคีย์ทั้งสองนี้เป็นเอกลักษณ์ของ vimperator และไม่ปรากฏเป็นกลุ่ม ^ V หมายถึง 'block visual' ใน vim ซึ่งไม่ได้ใช้ใน vimperator ดังนั้นการส่งผ่านสามารถกำหนดให้กับคีย์อื่นได้ง่าย ฉันแนะนำแบ็กสแลชในโหมดคำสั่งและ ctrl + แบ็กสแลชในทั้งคำสั่งและโหมดแทรก ใบนั้น ^ C ฉันคิดว่าควรย้ายไปที่ ^ S นี่มีตัวช่วยจำที่ดีสองอย่างคือ 'หยุด' และยังเป็นปุ่มลัด Unix สำหรับ XOFF ซึ่งไม่มีประโยชน์ แต่มีความหมายคล้ายกัน ^ S ปัจจุบันคือ "save page as" ใน vimperator ซึ่งไม่ค่อยได้ใช้และยังสามารถเข้าถึงได้ด้วย: save หรือ: saveas

การเลิกทำนั้นหักเช่นกัน มันคือ ^ Z แต่ ^ Z ไม่ใช่โหมดส่งผ่านและไม่มีวิธีเลิกทำการแก้ไขในเขตข้อมูลฟอร์มโดยไม่ต้องใช้เมาส์ ฉันไม่เห็นเหตุผลใดเลยที่จะไม่ย้ายไปยังฮอตคีย์อื่นโดยเฉพาะอย่างยิ่งเมื่อ ^ Z ในกลุ่มหมายถึงการระงับซึ่งไม่เกี่ยวข้องอย่างสมบูรณ์ ฉันไม่สามารถนึกถึงฮ็อตคีย์ที่ไม่มีกฎเกณฑ์ในการเปลี่ยนแปลงสิ่งนี้ แต่ ^ Z เป็นแอพพลิเคชั่นที่ค่อนข้างไร้เดียงสาดังนั้นคีย์ฮอตที่ไม่ได้ใช้จะทำ

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


2

ฉันกำลังมองหาวิธีที่จะทำเช่นนี้ในขณะที่ ทำได้ดีนี่. แต่โซลูชัน noremap จาก user4126 นั้นค่อนข้างสมบูรณ์แบบถ้าฉันต้องการวางลงใน commandline หรือลงในกล่องข้อความตามที่โจชี้ให้เห็น ดังนั้นผมจึงเอ็นดูกับ inoremap และ cnoremap กว่าเกินไปในhttp://charlieharvey.org.uk/page/vimperator_cut_and_paste ดูเหมือนจะไม่รองรับ vnoremap

ดังนั้นคุณสามารถวางลงใน commandline และลงในกล่องข้อความโดยใช้ทางลัด ctrl-v เพียงครั้งเดียว วางสิ่งต่อไปนี้ใน. vimperatorrc ของคุณแล้วรีสตาร์ท 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>

2

ฉันไม่พบคำตอบที่ให้ประโยชน์เนื่องจากฉันไม่เห็นCtrl+ cทุกที่ สิ่งที่ฉันทำคือการใช้ทางลัด SecureCRT นั่นคือสำหรับการคัดลอกจากหน้า:

Ctrl+Ins

สำหรับการวาง: Ctrl+ Vสองครั้ง (อย่างที่ใครบางคนพูดในคำตอบที่อื่น)


ขอบคุณครับท่าน การแมป <cc> กับ <c-ins> แก้ไขรสชาติเฉพาะของปัญหานี้
Steve Vermeulen

1

ลองทำสิ่งต่อไปนี้หากคุณอยากมีประสบการณ์มากกว่าคนที่มีประสบการณ์เต็มตัว:


ถัดไปโปรดสำหรับ FireFox 3.6 ทันที :)
Alexey Romanov

1

สำหรับคำตอบสั้น ๆ - ^ V ^ V (เช่น. Ctrl-V Ctrl-V)

Ctrl-V ตัวแรกทำ "การกดแป้นครั้งต่อไปผ่านไป" Ctrl-V อันที่สองวางข้อความ นี่คือสิ่งที่ฉันทำกับฟิลด์ข้อความส่วนใหญ่

หากคุณใช้โหมด vi สำหรับเขตข้อมูลข้อความหลายบรรทัด (ตั้ง noinsertmode) คุณสามารถวางโดยใช้ p - ดังนั้นหากฉันต้องการวาง URL ของแท็บอื่นลงในแท็กนี้ฉันสามารถไปที่แท็บนี้ใช้ y แล้วย้ายกลับไปที่ แท็บนี้ แถบด้านล่างของเบราว์เซอร์จะบอกว่า - TEXTAREA - และฉันสามารถกด p เพื่อวางใน URL


0

ฉันอยากจะแนะนำให้ใช้

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

เพราะหากคุณเปิดโปรแกรมแก้ไขข้อความภายนอกหน้าต่าง Cc ที่ FF แบบง่ายจะสิ้นสุดโปรแกรมแก้ไขภายนอกและคุณจะสูญเสียทุกอย่าง

BR

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.