คำถามติดแท็ก cut-copy-paste

คำถามเกี่ยวกับการตัดการคัดลอกและการวางข้อความ ในกลุ่ม "ตัด" เรียกอีกอย่างว่า "ลบ", "คัดลอก" เรียกอีกอย่างว่า "งัด" และ "วาง" เรียกอีกอย่างว่า "วาง"

3
ฉันจะคัดลอกไฟล์ใน netrw ได้อย่างไร
./A/B/ไดเรกทอรีการทำงานปัจจุบันคือ เอกสารที่ว่างเปล่าจะถูกเปิดเมื่อฉันพิมพ์vimและ netrw ถูกเปิดด้วยคำสั่ง:e.หน้าต่างถูกแยกตามและฉันสามารถนำทางไปยังไดเรกทอรีระดับบนคือvs. ./A/ตอนนี้ผมต้องการคัดลอกไฟล์a_file.jpgจากไป./A/B/./A/ ฉันลองyyใช้ไฟล์เป้าหมายและpในหน้าต่างเป้าหมาย (ไดเรกทอรี) แต่ไม่บรรลุเป้าหมาย มีวิธีใดที่สามารถบรรลุเป้าหมายโดยไม่ต้องติดตั้งปลั๊กอินเสริมหรือไม่

4
การดึงและวางขณะเพิ่มขึ้น
ฉันกำลังแก้ไขไฟล์. sql ใน Vim: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), สิ่งที่ฉันต้องการทำคือดึง(1, 1),สายแล้ววางมัน 137 ครั้ง; อย่างไรก็ตามฉันต้องการเพิ่มจำนวนที่สองในวงเล็บทุกครั้ง ผลลัพธ์จะมีลักษณะดังนี้: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), (1, 2), (1, 3), ... (1, 137), มีวิธีทำใน Vim หรือไม่และถ้าเป็นเช่นนั้นฉันจะใช้คำสั่งอะไร ขอบคุณ!

3
ฉันจะเลือกบล็อกของข้อความที่ฉันเพิ่งวางใน Vim ได้อย่างไร
ฉันมักจะต้องย้าย / คัดลอกโค้ดระหว่างไฟล์ต้นฉบับของฉัน หลังจากที่ฉันวางบล็อกข้อความฉันมักจะต้องใช้การดำเนินการบางอย่างกับบล็อกนั้นเช่นการใส่=กลับเข้าไปใหม่ มีวิธีในการเลือกบล็อกข้อความที่ฉันเพิ่งวางโดยไม่ต้องทำเองหรือไม่

1
ทำไม p วางบรรทัดที่คัดลอกไว้หลังบรรทัดปัจจุบันแทนที่จะเป็นหลังคำปัจจุบัน
สมมติว่าฉันมีสี่บรรทัดต่อไปนี้: line1 line2 line3 line4 ตอนนี้ถ้าฉันไปที่line1และทำสิ่งyyที่คัดลอกบรรทัดและจากนั้นไปที่จุดเริ่มต้นline3และทำการวางโดยใช้ 'p' ฉันจะได้รับ ... line3 line1 line4 .... ทำไมมันวางline1หลังจากline3ในบรรทัดใหม่ แม้ว่าตอนแรกของฉันจะเป็นเพราะอักขระขึ้นบรรทัดใหม่ $ ถูกแนบกับ line3 และเมื่อฉันกดpเป็นกลุ่มให้ถือว่าline3$เป็นคำเดียวดังนั้นจึงวางหลังจากline3$นั้น อย่างไรก็ตามดูเหมือนว่าฉันเข้าใจผิด เพราะถ้าฉันทำสิ่งนี้line3 $แล้วทำpที่จุดเริ่มต้นของบรรทัดฉันจะได้ผลลัพธ์เดียวกัน ทำไมไม่pสร้างสายใหม่และวางเป็นเส้นใหม่หลังจากที่line3?

2
ลบจากเคอร์เซอร์จนถึงอักขระแรก x (ขยายหลายบรรทัด)
ฉันรู้ว่าฉันสามารถลบออกจากเคอร์เซอร์จนถึงและรวมถึงการเกิดขึ้นครั้งแรกของตัวอักษรxdfxกับ ใช้ได้กับหนึ่งบรรทัดเท่านั้น ฉันจะลบออกจากตำแหน่งเคอร์เซอร์ปัจจุบันจนถึงการเกิดขึ้นครั้งแรกของxเมื่อxไม่อยู่ในบรรทัดเดียวกันได้อย่างไร เช่นหากเคอร์เซอร์อยู่หลังช่องว่างแรกใน yada yada yada yada yada yada x และฉันพิมพ์dfxผลลัพธ์จะต้อง: ญาดา

3
เป็นกลุ่มใน WSL: ซิงโครไนซ์คลิปบอร์ดระบบหรือไม่ (ตั้งค่าคลิปบอร์ด ^ = ไม่มีชื่อ)
ในขณะที่ใช้ WSL / Bash สำหรับ Windows ฉันต้องการที่จะใช้y yy 3yและpวิธีเดียวกับที่พวกเขาทำงานเป็นกลุ่ม แต่การเชื่อมต่อกับคลิปบอร์ดของระบบที่ใช้ร่วมกันโดยแอพทั้งหมดไม่ใช่คลิปบอร์ดภายในของ vim ... ฉันมีความชำนาญในการจัดการคลิปบอร์ด ประวัติศาสตร์ ดูเหมือนว่ากลุ่มมีตัวเลือกในตัวเพื่อซิงโครไนซ์บัฟเฟอร์การคัดลอก / วางกับคลิปบอร์ดของระบบ ... แต่ปัญหาเมื่อเรียกใช้ WSL คือคุณต้องใช้/mnt/c/Windows/System32/clip.exeเพื่อเข้าถึงคลิปบอร์ด ... ดังนั้นแม้ว่าฉันจะต้องการ เพื่อให้สามารถใช้: set clipboard^=unnamed ดูเหมือนว่ายังไม่มีการสนับสนุน WSL ฉันเข้าใจว่า neovim มีตัวเลือกนี้ แต่ฉันไม่ต้องการทดลองใช้ neovim ในตอนนี้ ... สำหรับตอนนี้สิ่งที่ใกล้เคียงที่สุดสำหรับวิธีแก้ไขปัญหาที่ฉันพบคือ: nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> แต่นี่เป็นทางออกที่น่ากลัวจริงๆในความคิดของฉัน ... …

3
วิธีแทรกข้อความซ้ำ ๆ ที่มีความแตกต่างเล็กน้อยในกลุ่ม?
ฉันต้องการแทรกข้อความแบบนี้: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... ฉันรู้ว่าฉันสามารถวางข้อความได้หลายครั้งจากนั้นใช้การแทนที่เพื่อเปลี่ยนคำเดียวสำหรับแต่ละบรรทัด แต่ฉันก็ยังพบว่าวิธีนี้ไม่สะดวกมาก มีวิธีการบันทึกคำหรือรายการคำใน "ตัวแปร" แล้วใช้ตัวแปรนี้เพื่อสร้างข้อความที่คล้ายกัน? แก้ไขฉันทำสิ่งที่ไม่ชัดเจนในคำถามต้นฉบับจริง ๆ แล้วฉันพยายามทำให้ฟังก์ชั่นคำนิยามที่เหมือนกันดังนั้นwordA wordB... อาจปรากฏหลายครั้งในแต่ละโคลนของข้อความและข้อความอาจมีหลายบรรทัด รูปแบบเป็นเช่นนี้: similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (ข้อความอาจมีบรรทัดใหม่และ wordA, …

6
การลบเป็นกลุ่มและวางโดยไม่มีบรรทัดใหม่
หลายครั้งในกลุ่มฉันต้องการลบบรรทัดทั้งหมดดังนั้นฉันจึงใช้ dd อย่างไรก็ตามฉันต้องวางบรรทัดนั้นลงในตำแหน่งอื่นภายในบรรทัด แต่สิ่งนี้จะแทรกบรรทัดใหม่ก่อนที่จะวางจึงทำให้ยากสำหรับฉันที่จะได้รับผลลัพธ์ที่ต้องการ ตัวอย่างเช่น, while( pasteInHere ) { cin >> n; // Delete this line completely with dd } เมื่อฉันทำกับรหัสข้างต้นฉันได้รับ: while( pasteInHere ) cin >> n; // Delete this line completely with dd { } ซึ่งอยู่ไกลจากผลลัพธ์ที่ฉันต้องการ ... ฉันจะระงับพฤติกรรมการขึ้นบรรทัดใหม่นี้ได้อย่างไรหรือใช้วิธีอื่นที่มีประสิทธิภาพมากขึ้นได้อย่างไร ฉันไม่คิดว่า d $ จะดีเพราะฉันไม่เพียง แต่ต้องไปที่จุดเริ่มต้นของบรรทัด แต่ถ้าฉันต้องการลบบรรทัดว่างด้วยฉันต้องลบมันในทะเบียนอื่นฉันรู้สึกว่าควรจะมีวิธีที่ง่ายกว่า! ขอบคุณ

5
วิธีคัดลอกข้ามเทอร์มินัล
ฉันใช้ระบบ Linux สอง VIMS จะเปิดในสองขั้ว ตอนนี้ฉันต้องการคัดลอกข้อความจาก A ถึง B วิธีหนึ่งที่ทำได้คือเลือกข้อความใน A ใช้เมาส์เพื่อคัดลอกจากนั้นสลับเป็น B ในโหมดแทรกคำสั่ง<c-r>+จะวางข้อความ อย่างไรก็ตามมีการดำเนินการโดยไม่ใช้เมาส์หรือไม่ เช่น"+yyในเมื่อสวิทช์ไป B o<c-r>+? ฉันสำรวจคู่ของชุดค่าผสมในไร้สาระ และฉันค้นหา "คัดลอกข้ามเทอร์มินัล" แต่ไม่พบอะไรเลย @statox ผู้ใช้แสดงให้เห็นหนึ่งในการแก้ปัญหาการใช้โหมดภาพคือv$"+yในเมื่อสวิทช์ไป o<c-r>+B มีวิธีง่าย ๆ ที่สามารถคัดลอกข้อความใน A โดยไม่ต้องเข้าสู่โหมด v หรือไม่? การเข้าสู่โหมด v อย่างเหมาะสมนั้นไม่ได้เกี่ยวข้องกับการกดปุ่มมากเกินไปเพียงแค่สงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ เช่น. หากเคอร์เซอร์อยู่ตรงกลางของบรรทัดให้yyคัดลอกทั้งบรรทัด (เพื่อลงทะเบียน") ในขณะที่0v$yทำสิ่งเดียวกันด้วยการกดปุ่มพิเศษ หรือคำถามของฉันสามารถลดลงได้หากมีวิธีที่มีการกดปุ่มน้อยกว่า0v$"+yการคัดลอกที่ฉันสามารถใช้<alt-tab>o<c-r>+เพื่อวาง

2
วิธีการวางบล็อกที่มองเห็นเริ่มต้นด้วยบรรทัดอื่น
ฉันใช้เวลานานมากในการตระหนักว่าการวาง (การวาง) สิ่งที่มีpหรือPบล็อกแบบภาพเลือกด้วยctrl+vและดึง (คัดลอก) ด้วยyรักษาลักษณะไว้ก่อนดังนั้นเมื่อข้อความที่คัดลอกอยู่ตรงกลางบรรทัดนั้น จะถูกคัดลอกท่ามกลางข้อความอื่น ๆ เมื่อเป็นไปได้ ในทางตรงกันข้าม select-line ที่มีVไม่วางบรรทัดที่คัดลอกระหว่างข้อความอื่น แต่เริ่มต้นที่บรรทัดอื่น ตัวอย่างเช่นสมมติว่าฉันมี: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. 12/15: 12/16: 12/17: เมื่อฉันต้องการตัดAvocadoและBeanและCherryโดยการเลือก (การเลือกแสดงเป็น_) 12/12: ________ Apple. 12/13: ________ Banana. 12/14: ________ Citron. 12/15: 12/16: 12/17: และกดyและเลื่อนเคอร์เซอร์ไปที่บรรทัดต่อไปนี้ (เคอร์เซอร์แทน_) 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. …

3
ฉันจะแสดงรายการเนื้อหาของรีจิสเตอร์ก่อนวางได้อย่างง่ายดายได้อย่างไร?
ฉันใช้ทะเบียนจำนวนมากสำหรับการคัดลอก / วาง แต่ฉันมักจะลืมว่าการลงทะเบียนเนื้อหาของฉันคืออะไร มีวิธีในการแสดงการลงทะเบียนก่อนวางหรือไม่? เป็นการดีที่มันจะออกจากการลงทะเบียนบนหน้าจอเมื่อเลือกหนึ่งที่เราต้องการ

6
วิธีคัดลอกสี่อักขระแรกของทุกบรรทัดไปยังจุดสิ้นสุดของบรรทัดเดียวกันได้อย่างไร
รับชุดของบรรทัดที่มีลักษณะคล้ายกับนี้: 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. มีวิธีที่ฉันสามารถคว้าตัวละครสี่ตัวแรก (ปี) และคัดลอกไปที่ท้ายบรรทัดเพื่อให้เป็นดังนี้: 2001 "Some …

1
ต้นกำเนิดของคำว่า "งัด" คืออะไร?
ฉันสนใจที่จะเรียนรู้ว่าคำว่างัดได้รับชื่ออย่างไร ฉันสนใจด้วยเช่นกันว่าทำไม Vi / Vim "ดึง" แตกต่างจาก Emacs "ดึง" ดูเพิ่มเติม: คำถามเดียวกันใน Unix & Linux ; คำถามที่สองเกี่ยวกับ Emacs

2
วิธีที่มีประสิทธิภาพมากที่สุดในการแทนที่บัฟเฟอร์ทั้งหมดหรือไม่
ขณะนี้ฉันมีสองวิธีที่คล้ายกันเพื่อแทนที่บัฟเฟอร์ทั้งหมดด้วยข้อความอื่น ๆ (พูดในคลิปบอร์ด) วิธีที่ # 1: ลบทุกบรรทัด: :%d. วางข้อความ: "+P(หรือคล้ายกัน: :put+) วิธีที่ # 2: ggVGสายตาเลือกเส้นทั้งหมด: "+Pวางข้อความ: อย่างไรก็ตามฉันไม่สามารถหาทางสั่งไฟได้ สิ่งที่ใกล้เคียงที่สุดที่ฉันพบคือ:changeคำสั่ง แต่ดูเหมือนว่าจะทำงานได้ดีกับการลงทะเบียน แน่นอนฉันสามารถสร้างฟังก์ชั่นและ / หรือแมปคีย์เพื่อทำสิ่งนั้น แต่ก่อนที่ฉันจะทำการปรับแต่งเหล่านี้ทั้งหมดฉันต้องการตรวจสอบให้แน่ใจ: มีคำสั่งในตัวเพื่อแทนที่ช่วงของบรรทัดด้วยข้อความอื่น ๆ หรือไม่? เช่นคุณสามารถ:%replace+แทนที่บัฟเฟอร์ทั้งหมดด้วยข้อความในคลิปบอร์ด?

3
ข้อความจะถูกย้ายจากการลงทะเบียนหนึ่งครั้งไปยังจำนวนการลงทะเบียนได้อย่างไร?
มีวิธีใดที่จะทำให้ข้อความ 'ไพพ์' จากรีจิสเตอร์เป็นรีจิสเตอร์อื่นหรือรีจิสเตอร์อื่น ยกตัวอย่างเช่นย้าย"qไปลงทะเบียนผ่าน"1"5 ฉันมักจะต้องการสร้างมาโครรุ่นที่แตกต่างกันเล็กน้อยดังนั้นมันจึงมีประโยชน์ที่จะสามารถคัดลอกมาโคร 'เทมเพลต' ไปยังรีจิสเตอร์หลาย ๆ รีจิสเตอร์แล้วปรับเปลี่ยนแต่ละอัน เพื่อให้เป็นตัวอย่างในทางปฏิบัตินี่คือปัญหาที่ทำให้ฉันมีคำถามนี้ ฉันต้องเปลี่ยนบรรทัดต่อไปนี้จากภาษาคำอธิบายฮาร์ดแวร์เป็นบล็อกซ้ำหลาย ๆ RAM64(in=in, load=load0, address=address[0..5], out=out1); ถึง RAM64(in=in, load=load1, address=address[0..5], out=out2); RAM64(in=in, load=load2, address=address[0..5], out=out3); RAM64(in=in, load=load3, address=address[0..5], out=out4); RAM64(in=in, load=load4, address=address[0..5], out=out5); ฉันมีแมโครที่มีประสิทธิภาพนี้โดยใช้ฟังก์ชั่นที่เพิ่มขึ้นเป็นที่ฉันเก็บไว้ในการลงทะเบียนyypW^At)^A"a บางครั้งฉันต้องการรูปแบบของการเพิ่มขึ้นที่จะแตกต่างกันเล็กน้อยเช่น RAM512(in=in, load=load1, address=address[0..8], out=out2); RAM512(in=in, load=load2, address=address[0..8], out=out4); RAM512(in=in, load=load3, address=address[0..8], out=out6); RAM512(in=in, load=load4, address=address[0..8], …

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