คำถามติดแท็ก register

รีจิสเตอร์เก็บตัวอย่างข้อความสำหรับดึง (คัดลอก) ลบ (ตัด) ใส่ (วาง) ใน Vim รีจิสเตอร์ยังใช้สำหรับการเล่นมาโครและรีจิสเตอร์บางตัวมีความพิเศษและสามารถอ้างอิงคลิปบอร์ดของระบบปฏิบัติการหรือประเมินนิพจน์

2
ฉันจะดูและแก้ไขการบันทึกของฉัน (เช่นมาโครที่บันทึกไว้) ได้อย่างไร
ฉันใช้ซ้ำที่ซับซ้อนในการบันทึกการดำเนินงานของฉัน ( qqเพื่อบันทึกการดำเนินการบาง , qการหยุด) และฉันไม่ผิดพลาด เป็นไปได้ไหมที่จะเห็นสิ่งที่ฉันบันทึกและแก้ไขข้อผิดพลาดแทนที่จะทำอีกครั้ง? เรียกใช้ตัวละครที่บันทึกไว้ตาม@qผลงาน แต่ฉันไม่เห็นในการแม็พ ( :map q- No mapping found) :help recordingและมีข้อมูลไม่มากในการช่วยเหลือโดยการพิมพ์:

5
ดำเนินการบางอย่างโดยไม่ต้องล้างการลงทะเบียน
บ่อยครั้งในไฟล์การกำหนดค่าฉันอาจคัดลอกและวางบล็อกของบรรทัดแล้วฉันต้องการเปลี่ยนแปลงเล็กน้อยในบล็อกนั้น หลังจากวางฉันใช้xเพื่อลบอักขระที่ฉันต้องการลบจากนั้นไปยังเพื่อวางบล็อกถัดไป ยกเว้นxใส่ตัวละครที่ถูกลบไปบนคลิปบอร์ดดังนั้นฉันต้องจัดเรียงบล็อกของบรรทัดใหม่อีกครั้ง มีวิธีการทำเช่นนี้โดยไม่ต้องเข้าสู่โหมดแทรกหรือไม่?

3
ฉันจะหยุดการบันทึกในบรรทัดคำสั่งได้อย่างไร
เมื่อฉันบันทึกแมโครด้วยqและฉันก็เสร็จฉันสามารถพิมพ์: q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดปกติหรือมองเห็น <c-o>q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดแทรก .. ฉันจะหยุดการบันทึกได้อย่างไรถ้าแมโครของฉันสิ้นสุดในโหมดคำสั่ง

3
ฉันจะล้างทะเบียน / ทะเบียนหลายรายการได้อย่างสมบูรณ์ได้อย่างไร
ผมค่อนข้างบ่อยใช้:registersคำสั่งเพื่อแสดงเนื้อหาของทั้งหมดลงทะเบียน (I ลืมสิ่งที่ฉันใส่ที่ตรงกับสิ่งที่บทบาทของ"*, "., "%ฯลฯ ) โดยเฉพาะอย่างยิ่งเพราะฉันตั้งค่า"ตัวเลือกในviminfoตัวเลือกและด้วยเหตุนี้การลงทะเบียนของฉันจะยังคงอยู่ระหว่างเซสชันเสียงเรียกเข้าของฉัน (ซึ่งโดยทั่วไปแล้วฉันต้องการในระยะสั้น) ตลอดเวลา:registersรายการจะยาวขึ้นเรื่อย ๆ และยุ่งยากมากขึ้น กับสิ่งที่เก่าจริงๆ จนถึงตอนนี้วิธีเดียวที่ฉันพบว่าการแก้ไขนี้คือการแก้ไขเนื้อหาลงทะเบียน 'เก่า' บางส่วนออกด้วยตนเอง~/.viminfoซึ่งฉันต้องทำด้วยvim -u NONEและจึงยุ่งยากเล็กน้อย มีวิธีที่สะอาดกว่าในการล้างการลงทะเบียนทั้งหมดหรือล้างการลงทะเบียนเฉพาะดังนั้นจึงไม่ปรากฏใน:registersรายการอีกต่อไปหรือไม่

3
การลงทะเบียนหลุมดำ ("_) คืออะไร?
ฉันเพิ่งอ่านเกี่ยวกับการลงทะเบียนหลุมดำ"_ซึ่งเป็นการลงทะเบียนแบบเขียนอย่างเดียว เอกสารที่เป็นกลุ่มอธิบายด้วยวิธีนี้: ทะเบียนหลุมดำ "_ เมื่อเขียนลงทะเบียนนี้ไม่มีอะไรเกิดขึ้น สามารถใช้เพื่อลบข้อความโดยไม่มีผลต่อการลงทะเบียนปกติ เมื่ออ่านจากการลงทะเบียนนี้จะไม่มีการส่งคืนสิ่งใด ในบทความและหนังสือทั้งหมดที่ฉันอ่านผู้แต่งมักจะใช้ตัวอย่างเดียวกันซึ่งก็คือการใช้ทะเบียนนี้เมื่อเราต้องการลบข้อความบางส่วนโดยไม่ต้องลบสิ่งที่เราเคยเรียกก่อนหน้านี้ ฉันเข้าใจการใช้งานนี้ แต่ฉันประหลาดใจกับความจริงที่ว่าฉันไม่สามารถค้นหากรณีการใช้งานอื่น ๆ ของการลงทะเบียนนี้ซึ่งทำให้ฉันมีคำถาม 2 ข้อ: การลงทะเบียนนี้มีประโยชน์ในกรณีการใช้งานอื่นหรือไม่? ถ้าใช่แล้วอันไหนล่ะ? หากวัตถุประสงค์เดียวของการลงทะเบียนนี้จะถูกใช้ในกรณีการใช้งานที่ฉันยกมาก่อนทำไมผู้สร้าง Vim จึงตัดสินใจแก้ปัญหานี้ด้วยการลงทะเบียนดังกล่าว ? ผมหมายถึงคำตอบนี้"_แสดงให้เห็นถึงวิธีการแก้ปัญหาที่เกิดขึ้นซึ่งหมายถึงการกดแป้นพิมพ์น้อยกว่าการใช้ การใช้"0สามารถหลีกเลี่ยงการใช้การลงทะเบียนหลุมดำดังนั้นทำไมพวกเขาจึงสร้างมันขึ้นมา?

3
ฉันสามารถทำให้ Vim บันทึก "การลบขนาดเล็ก" ลงในการลงทะเบียน "1 ได้หรือไม่
ฉันเพิ่งลบปลั๊กอิน YankRing ออกจากการตั้งค่าของฉันส่วนหนึ่งเพราะมันทำให้เกิดปัญหาบางอย่างกับมาโคร แต่ส่วนใหญ่เป็นเพราะฉันตัดสินใจว่าจะเป็นการดีกว่าถ้าฉันจะฝึกตัวเองให้ใช้รีจิสเตอร์ Vim แทน - โดยเฉพาะอย่างยิ่ง"1แล้วขยับตัวขึ้นผ่าน"2, "3ฯลฯ เป็นลบต่อไปจะทำให้เป็นประโยชน์อย่างมาก อย่างไรก็ตามเมื่อการลบ / การเปลี่ยนแปลงลบข้อความน้อยกว่าหนึ่งบรรทัดมันจะถูกเก็บไว้ในการ"-ลบการลงทะเบียนขนาดเล็กแทน(มีข้อยกเว้นเล็กน้อยสำหรับคำสั่งการเคลื่อนไหวบางอย่าง) หากทำการลบขนาดเล็กในลำดับต่อมาข้อความส่วนนั้นจะหายไป เป็นไปได้ไหมที่จะให้ Vim เก็บการลบทั้งหมดในการลงทะเบียน"1? nnoremap d "1d เกือบจะทำงาน แต่คุณท้ายด้วยข้อความทั้งในการลงทะเบียนและ"1 "2 ฉันไม่สนใจว่าการทำงานของการลงทะเบียนการลบขนาดเล็กจะได้รับผลกระทบหรือไม่ การแนะนำให้ฉันเปลี่ยนพฤติกรรมของฉันเพื่อบันทึกการลบเล็ก ๆ น้อย ๆ ในการลงทะเบียนที่ระบุชื่อจะไม่เป็นคำตอบที่เป็นประโยชน์นั่นคือสิ่งที่ฉันกำลังทำอยู่ในปัจจุบัน
14 register 

1
เหตุใด Line Feed จึงถูกแปลงเป็นอักขระ Null ภายในรีจิสเตอร์การค้นหาและเป็น Carriage Return บนบรรทัดคำสั่ง
ถ้าฉันมีข้อความต่อไปนี้: foo bar ฉันเลือกและคัดลอก ตอนนี้ข้อความถูกเก็บไว้ในการลงทะเบียนที่ไม่มีชื่อ"และนี่คือเนื้อหา (ผลลัพธ์ของ:reg "): "" foo^Jbar^J ตามแผนภูมินี้ดูเหมือนว่า^Jเครื่องหมายรูปหมวกสำหรับตัวดึงข้อมูลบรรทัด หากฉันต้องการทำซ้ำทะเบียนที่ไม่มีชื่อในการaลงทะเบียนโดยพิมพ์: :let @a = @" นี่คือเนื้อหา (output of :reg a): "a foo^Jbar^J มันไม่เปลี่ยนแปลง ถ้าตอนนี้ฉันทำซ้ำในทะเบียนการค้นหาโดยพิมพ์:let @/ = @"นี่คือเนื้อหา (ผลลัพธ์ของ:reg /): "/ foo^@bar^@ ตามแผนภูมิก่อนหน้านี้ดูเหมือนว่า^@เป็นเครื่องหมายรูปหมวกสำหรับอักขระ Null เหตุใด Line Feed จึงถูกแปลงเป็นอักขระ Null ภายในรีจิสเตอร์การค้นหาโดยอัตโนมัติ (แต่ไม่ใช่aรีจิสเตอร์) ถ้าฉันแทรกการลงทะเบียนที่ไม่มีชื่อในบรรทัดคำสั่ง (หรือในการค้นหาหลังจาก/) โดยพิมพ์:<C-R>"นี่คือสิ่งที่ถูกแทรก: :foo^Mbar^M อีกครั้งตามแผนภูมิล่าสุด^Mดูเหมือนจะเป็นเครื่องหมายรูปหมวกสำหรับ Carriage Return เหตุใด Line Feed …

1
ป้องกัน Vim จากการบันทึกเหตุการณ์สำหรับไฟล์บางชนิด
หากต้องการเพิ่มคำถามสแต็คโฟลว์โฟล์วสิ่งใดที่ควรใส่.vimrcเพื่อให้แน่ใจว่า 'การแก้ไขส่วนตัว' ของนามสกุลไฟล์บางไฟล์ (เช่น.gpgไฟล์) ไม่ควรบันทึกข้อมูลเกี่ยวกับงานที่ทำเสร็จรวมถึงการลงทะเบียนประวัติการค้นหาประวัติคำสั่งการดูการสลับ ฯลฯ สำหรับgpgไฟล์ผู้ใช้สามารถใช้vim pluginนี้ได้ แต่นอกเหนือจากการแก้ไขปลั๊กอิน มีการขยายแนวคิดที่กล่าวถึงเหล่านี้ไปยังประเภทไฟล์ใด ๆ เราอาจใช้ประโยชน์จากคำสั่งต่อไปนี้ if <ft in privacy_ext_list> set noswapfile set noundofile set viminfo= endif แต่นอกจากคำแถลงเงื่อนไขที่เหมาะสมแล้วมีอะไรหายไปบ้าง นอกจากนี้ Vimscript ยังมีวิธีสร้างอาเรย์ของไฟล์นามสกุลแล้วประเมินว่าไฟล์ประเภทปัจจุบันนั้นอยู่ในอาเรย์หรือไม่?

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>+เพื่อวาง

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

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], …

1
เขียนทับบรรทัดปัจจุบันด้วย register?
ฉันมักจะต้องการคัดลอกบรรทัดและแทนที่บรรทัดอื่นด้วยสำเนาที่วาง มีวิธีที่ดีกว่าYในบรรทัดที่มาไปที่บรรทัดที่จะต้องมีการเปลี่ยนและPjdd?

4
ใน neovim ฉันจะแบ่งปันการลงทะเบียนระหว่างอินสแตนซ์ของตัวแก้ไขได้อย่างไร
ฉันรู้ว่ากลุ่มมีไคลเอนต์ / เซิร์ฟเวอร์แบ่งที่อนุญาตให้ลงทะเบียนการแชร์ระหว่างไคลเอนต์กลุ่มที่แตกต่างกัน แต่คุณจะทำสิ่งเดียวกันใน neovim ได้อย่างไร ไม่รองรับการตั้งค่าสถานะไคลเอนต์ / เซิร์ฟเวอร์ ฉันเห็นคำถามนี้แต่เป้าหมายของฉันคือแบ่งปันการลงทะเบียนโดยเฉพาะไม่ใช่การเลียนแบบลูกค้า / เซิร์ฟเวอร์ที่เหลือ สิ่งที่เหมือนneovim remoteเป็นวิธีเดียวหรือมีบางสิ่งที่ง่ายกว่าที่ฉันสามารถทำได้?

4
จะแทนที่ข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร
สมมติว่าฉันมีข้อความที่ถูกFnordดึงมาก่อนและเคอร์เซอร์ของฉันอยู่Bที่บรรทัด: M:mock(Baz) ฉันจะเปลี่ยนข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร ปัจจุบันฉันมักจะทำผิดพลาดโดยทำ: di( aka "ลบภายใน ()" SHIFT + P แต่สิ่งที่ทำให้ฉันมีข้อความที่แน่นอนอีกครั้งเนื่องจากข้อความที่ถูกลบจะถูกย้ายไปที่การลงทะเบียน ฉันต้องการ: M:mock(Fnord)

1
กำหนดคำสั่งที่กำหนดเองสำหรับการลงทะเบียน * และ +
หากฉันใช้ build Vim พร้อมxterm_clipboardฟีเจอร์เนื้อหาคลิปบอร์ดของระบบจะพร้อมใช้งานผ่านการ+ลงทะเบียน หากบิลด์ที่ฉันใช้อยู่ไม่มีคุณสมบัตินี้ฉันจะทำให้การ"+ลงทะเบียนเรียกโปรแกรมที่กำหนดเองของฉันเพื่อดึงข้อมูลและตั้งค่าคลิปบอร์ดของระบบ ( xsel -boและxsel -biหรือด้วยxclipหรือไม่) ในทำนองเดียวกันกับ"*ที่จะเรียกและxsel -poxsel -pi ประเด็นคือสามารถพิมพ์สิ่งที่ชอบ"+pโดยไม่ต้องกังวลว่าคุณลักษณะนั้นจะพร้อมใช้งานหรือไม่ พิมพ์ดีด:r !xsel -b<Enter>ไม่ได้เป็นสิ่งที่ฉันกำลังมองหา: ฉันต้องการการกดแป้นพิมพ์เดียวกันในการทำงานและฉันต้องการวางสายพันธุ์ที่จะทำตามสิ่งที่มีอยู่สำหรับการลงทะเบียน“จริง” ( P, gp, ... ) โบนัส: ฉันสามารถกำหนดคำสั่งที่กำหนดเองสำหรับชื่อการลงทะเบียนอื่น ๆ ได้หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.