Vi & Vim

คำถามและคำตอบสำหรับผู้ที่ใช้ตระกูล vi และ Vim ของเครื่องมือแก้ไขข้อความ

2
เพิ่มการปิด "หรือ" โดยอัตโนมัติเมื่อแทรกเข้าไป แต่เมื่อเคอร์เซอร์ไม่ได้อยู่ในสตริงแล้ว
ผมได้กำหนดไว้ในแมปของฉันที่จะใส่วงเล็บใกล้ชิดและการจัดฟันโดยอัตโนมัติเมื่อฉันใส่คนที่เปิดด้วยvimrcinoremap ( ()<esc>i ฉันต้องการทำแบบเดียวกันกับ"และ'แต่เฉพาะเมื่อเคอร์เซอร์ไม่อยู่ในสตริง - เนื่องจากภายในสตริง'นั้นอาจเป็นเครื่องหมายอะโพสโทรฟีแทนที่จะเป็นตัวคั่นสตริง ฉันจะทำสิ่งนี้ได้อย่างไร


3
ฉันจะทำให้หน้าต่างการเลือกตรวจการสะกดทำให้ฉันพิมพ์การแก้ไขของตัวเองได้อย่างไร
เมื่อทำการตรวจสอบการสะกดคำการพิมพ์z=จะแสดงรายการตัวเลือกตามที่แสดง คุณสามารถดูการสะกดที่ถูกต้อง "ie" ไม่แสดงเป็นตัวเลือกใด ๆ ฉันต้องการปรับปรุงเมนูนี้เพื่อให้ฉันสามารถพิมพ์ "ie" แทนแล้วกด Enter และแทนที่มัน มันจะดีถ้าเป็นส่วนหนึ่งของขั้นตอนเดียวกันถ้าฉันสามารถเริ่มพิมพ์ชื่อของหนึ่งในตัวเลือกที่นำเสนอและแท็บแข่งขันกับที่ - ใจของฉันทำงานได้ดีขึ้นในการแทนที่คำโดยการป้อนคำแทนที่จะป้อนตัวเลข ฉันสงสัยว่าสิ่งนี้จะต้องทำกับปลั๊กอิน แต่ฉันไม่แน่ใจว่ามันไม่ใช่แค่ตัวเลือกการกำหนดค่า

4
ฉันจะแปลงคำเป็น camelCase ในมาโครได้อย่างไร
ฉันมีรายการคำเช่นนี้ these are some words that I want to convert to camel case ฉันต้องการวิธีที่จะเปลี่ยนตัวอย่างเช่นcamel caseเข้าไปcamelCaseในมาโคร (หรือวิธีที่จะเปลี่ยนทุกบรรทัดของการเลือกบรรทัดที่มองเห็นเป็นกรณีอูฐ) ฉันสามารถใช้สิ่งที่ต้องการwgUlhxได้บ่อยเท่าที่จำเป็น แต่ปัญหาคือว่านี้ไม่ได้ทำงานให้กับคำพูดของความยาวที่แตกต่างกัน (ดังนั้นสำหรับตัวอย่างเช่นwgUlhxwgUlhxจะทำงานconvert this pleaseแต่ไม่ได้convert these pretty please) ผลลัพธ์ที่ต้องการสำหรับบรรทัดข้างต้นจะเป็น theseAre some wordsThatIWant toConvertTo camelCase มีวิธีใดที่จะทำให้สิ่งนี้เป็นแบบอัตโนมัติหรือไม่?

1
vimdiff และผสานความขัดแย้ง
เมื่อทำการผสานสาขาภายใต้การควบคุมของแหล่งที่มามักจะมีปัญหาการผสานที่ขัดแย้งกับผู้พัฒนารายอื่น ฉันรู้ว่าเราสามารถใช้ vimdiff ในการเปลี่ยนรหัสกับการควบคุมซอร์สแต่ก็มีวิธีที่เราสามารถใช้ vimdiff เพื่อช่วยแก้ไขข้อขัดแย้งในการรวมความขัดแย้ง โดยส่วนตัวฉันสนใจ git มากขึ้น แต่มันจะมีประโยชน์ที่จะเข้าใจว่ามีปลั๊กอิน / เทคนิคสำหรับเครื่องมือ / ระบบควบคุมแหล่งข้อมูลอื่น ๆ

1
เป็นไปได้หรือไม่ที่จะทำงานกับ. odt, .doc, .docx, .rtf และรูปแบบอื่น ๆ ที่ไม่ใช่ข้อความธรรมดาใน Vim?
บางครั้งมีคนส่งฉัน.odt, .docและ.docxไฟล์; การเปิดพวกเขาใน OpenOffice นั้นเป็นเรื่องที่เจ็บปวดเสมอเพราะอย่างนั้น OpenOffice ตอนนี้ฉันใช้เครื่องมือ commandline ที่หลากหลาย (เช่นodt2txt) เพื่อแปลงไฟล์เหล่านี้เป็นข้อความธรรมดาบันทึกข้อความธรรมดาเป็นไฟล์ชั่วคราวจากนั้นดู (และอาจแก้ไข) ใน Vim สามารถทำได้ง่ายกว่านี้ไหม บางทีมีบางอย่างกับกลุ่มอัตโนมัติหรือ หรืออาจจะมีวิธีที่ดีกว่า ฉันอยากจะทำ: $ vim file.odt เป็นกลุ่มแล้วดูแลการแปลงสำหรับฉันหรือไม่ ดียิ่งขึ้น (คะแนนโบนัส) จะเป็นถ้าฉันยังสามารถบันทึกไฟล์ (ไปfile.txt) แต่สิ่งนี้จะไม่ถูกสร้างขึ้นจนกว่าฉันจะเขียน ...

2
ฉันจะเปลี่ยนหน้าจอเริ่มต้นหรือหน้าจออินโทรของ Vim ได้อย่างไร?
เมื่อฉันเริ่มเป็นกลุ่มโดยไม่มีไฟล์ฉันจะเห็นสิ่งนี้เสมอ: VIM - Vi IMproved version 7.4.580 by Bram Moolenaar et al. Vim is open source and freely distributable Become a registered Vim user! type :help register<Enter> for information type :q<Enter> to exit type :help<Enter> or <F1> for on-line help type :help version7<Enter> for version info ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร โดยเฉพาะฉันต้องการวางผลลัพธ์ของคำสั่งเชลล์ ( fortune) …

3
คุณจะใช้ต้นไม้เปลี่ยนแปลงในกลุ่มได้อย่างไร
เป็นไปได้หรือไม่ที่จะดึงสาขาการเปลี่ยนแปลงที่ฉัน "ละทิ้ง" ตัวอย่างเช่นฉันเลิกทำการดำเนินการต่าง ๆ โดยใช้uแล้วฉันกำลังทำการเปลี่ยนแปลงในโหมดแทรก แต่แล้วฉันก็รู้ว่าฉันไม่ต้องการเปลี่ยนแปลงสิ่งนี้ฉันอยากกลับไปที่จุดเริ่มต้นของฉัน (ก่อนที่จะเลิกทำ) การเปลี่ยนแปลงเหล่านี้จะหายไปตลอดกาล?
14 undo-redo 

1
แสดงเส้นที่ถูกซ่อนไว้บางส่วน
ฉันได้เปิดการตัดบรรทัดด้วยset wrap linebreak nolistใน. vimrc ของฉัน อย่างไรก็ตามสิ่งนี้มีพฤติกรรมที่น่ารำคาญที่เส้นที่มองไม่เห็นอย่างสมบูรณ์บนหน้าจอนั้นถูกซ่อนเอาไว้และแทนที่ด้วยเครื่องหมาย @: ฉันจะทำให้บรรทัดเหล่านี้ปรากฏขึ้นแม้ว่าจะถูกซ่อนไว้เพียงบางส่วนได้อย่างไร
14 wrapping 

1
วิธีการแก้ปัญหาใด ๆ ที่มีอยู่เพื่อใช้เป็นกลุ่มจากหน้าจอสัมผัส?
ที่จริงแล้วฉันพบปัญหานี้เมื่อฉันใช้ ssh จากโทรศัพท์ android ของฉันเพื่อเข้าสู่เซิร์ฟเวอร์ลินุกซ์และฉันพยายามใช้เสียงเรียกเข้าเพื่อแก้ไขไฟล์บางไฟล์ มันเป็นเรื่องเล็กน้อย ... ไม่พอใจแม้ว่าฉันจะทำทุกอย่างที่ฉันสามารถทำได้จากเดสก์ท็อป / แป้นพิมพ์ทั่วไป ส่วนขยาย:มีคำถามคือทำไมมันไม่พอใจถ้าฉันสามารถทำสิ่งที่ฉันต้องการ ตัวอย่างเช่นการพิมพ์5j45|บนแป้นพิมพ์ที่เลียนแบบบนหน้าจอสัมผัสมีอัตราการส่งข้อมูลที่ต่ำกว่ามาก (ระหว่างสมองและอุปกรณ์ของคุณ) เช่นเดียวกับการแตะตำแหน่งอักขระที่ต้องการบนหน้าจอสัมผัส

2
แนวปฏิบัติที่ดีที่สุดสำหรับไฟล์ VIM?
ทุกครั้งที่ฉันตัดเซสชันในกลุ่มโดยการสูญเสียการเชื่อมต่อของฉันฉันค่อนข้างเต็มไปด้วยความเบื่อหน่าย (แต่ฉันยังคงใช้ vim ต่อไป ... สิ่งที่นักทำโทษตนเองอย่างฉันจะต้องเป็น) เพราะเมื่อฉันเปิดไฟล์อีกครั้ง ไฟล์กำลังรอที่จะยิงที่ทำลายงานของฉัน แนวทางปฏิบัติที่ดีที่สุดในการทำงานกับไฟล์ vim swap คืออะไร คุณเพิ่งจะเลือกใหม่ล่าสุด? หากไฟล์ทำงานตามที่คุณคาดหวังคุณเพียงแค่ลบไฟล์สลับหรือไม่ คุณจะกำจัดพวกเขาได้อย่างไร
14 swap-file 

2
วิธีโหลดปลั๊กอินตามเงื่อนไข
ฉันกำลังค้นหาคำตอบสำหรับสิ่งนี้ แต่ยังไม่พบอะไรเลยดังนั้นหากฉันพลาดอะไรบางอย่างที่ชัดเจนฉันขอโทษ ฉันคิดว่ามันจะเป็นการค้นหา google อย่างรวดเร็วดังนั้นอาจซับซ้อนกว่าที่ฉันคิด ฉันต้องการโหลดปลั๊กอินตามเงื่อนไขตามประเภทของไฟล์ที่ฉันกำลังแก้ไข ตัวอย่างเช่นเมื่อแก้ไข python ฉันไม่ต้องการ keybindings ที่vim-sexpติดตั้ง แต่เมื่อทำงานกับ clojure ฉันต้องการให้โหลดปลั๊กอินนั้น ฉันกำลังใช้ neovim และ pathogen อยู่ แต่ถ้ามีตัวจัดการปลั๊กอินอื่นที่ทำสิ่งนี้ให้ฉันฉันจะเปิดเพื่อสลับ นอกจากนี้หากมีอยู่จะ:set syntax whateverสลับปลั๊กอินหรือไม่ เพราะนั่นจะเป็นซุปเปอร์ :) ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ / ทิศทาง!

6
การใช้: สำรวจโดยไม่ปิดบัฟเฟอร์ปัจจุบัน
หากฉันเปิดไฟล์ explorer ด้วย:Exploreและเลือกไฟล์มันจะแทนที่บัฟเฟอร์ที่ฉันเปิดไว้ก่อนหน้านี้และฉันต้องเปิดอีกครั้ง ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร
14 buffers  netrw 

1
ฉันสามารถประหยัดการพับได้ไหม?
วันนี้ฉันเรียนรู้วิธีพับ / แฉใน Vim; มันค่อนข้างมีประโยชน์ โดยไม่คาดหมายเมื่อฉันออกจากไฟล์และป้อนใหม่อีกครั้งการพับที่ฉันสร้างจะหายไป (คลี่ออก) ในโครงการขนาดใหญ่ของ บริษัท เรามีบล็อคโค้ดเหนียว ๆ (แบบดั้งเดิม) จำนวนมากซึ่งค่อนข้างล้าสมัย แต่ขาดไม่ได้ ฉันต้องการพับมันเกือบจะถาวร มีวิธีสั้น ๆ ในการบอกให้ Vim บันทึกการตั้งค่าการพับของฉันสำหรับไฟล์หรือไม่?
14 folding 

6
วิธีผูกชุดบัฟเฟอร์เข้ากับแท็บ?
เมื่อฉันต้องการทำงานในโครงการที่แตกต่างกันในเวลาเดียวกันฉันมีเวิร์กโฟลว์ folowing: ฉันสร้างหนึ่งแท็บสำหรับแต่ละโครงการ ในแต่ละแท็บฉันเปิดไฟล์ที่ฉันต้องการแก้ไขซึ่งทำให้หลายบัฟเฟอร์ Optionnaly ถ้าฉันต้องการเห็นสองไฟล์ (หรือมากกว่า) ในเวลาเดียวกันฉันสร้างหน้าต่างแยกดังนั้นฉันมีแท็บที่มีหน้าต่างที่แตกต่างกันซึ่งแสดงบัฟเฟอร์หนึ่ง เพื่อนำทางระหว่างบัฟเฟอร์ของฉันฉันไม่ได้ใช้จริง ๆ:lsและ:b [name or number of buffer]ฉันได้สร้างการจับคู่ที่สะดวกทำให้ฉันสามารถสลับระหว่างบัฟเฟอร์ด้วย:bnextและ:bprevious วิธีการทำงานนี้ค่อนข้างดี แต่มีบางอย่างที่รบกวนฉัน: บัฟเฟอร์ถูกแชร์ระหว่างแท็บ ถ้าผมเปิดfile1และfile2ในtab1และfile3ในtab2ถ้าในtab1ผมใช้เวลาหลาย:bnextฉันจะเห็นfile3ในแท็บนี้ซึ่งผมไม่ต้องการที่จะ ขั้นตอนการทำงานที่ผมต้องการที่จะได้รับคือ folowing : เริ่มเป็นกลุ่ม (ฉันมีแท็บแรกที่มีบัฟเฟอร์อยู่): $ vim foo เพิ่มบัฟเฟอร์ลงในแท็บนี้: :e bar เปิดแท็บใหม่และเปลี่ยนเป็น: :tabnew เปิดบัฟเฟอร์ใหม่ในแท็บนี้: :e baz ถ้าฉันอยู่ในบัฟเฟอร์นี้และทำ:bnextหรือ:bpreviousฉันจะอยู่ในbazบัฟเฟอร์ (เพราะเป็นเพียงคนเดียวในแท็บนี้) ถ้าฉันไปที่แท็บก่อนหน้า:tabpreviousและดำเนินการหลายครั้ง:bnextฉันจะสลับระหว่างfooและbarบัฟเฟอร์เท่านั้น แต่จะไม่เห็นbaz ดังนั้นคำถามของฉันมาที่นี่:มันเป็นไปได้ที่จะผูกชุดของบัฟเฟอร์ไปยังแท็บและทำให้เป็นกลุ่มที่ไม่อนุญาตให้เข้าถึงบัฟเฟอร์บางส่วนจากแท็บอื่นกว่าที่พวกเขาตั้งใจจะอยู่ใน? หมายเหตุ:ฉันทราบว่าการใช้:b [myBuffer]จะเป็นวิธีหนึ่งในการเก็บบัฟเฟอร์ไว้ในแท็บ แต่เมื่อฉันมีไฟล์ 3 หรือ 4 ไฟล์ที่จะแก้ไขฉันรู้สึกว่าฉันใช้การแมปของฉันเร็วกว่าการพิมพ์ชื่อบัฟเฟอร์(แม้ว่าฉันจะทำได้ พิมพ์ตัวอักษรเพียงบางส่วนให้ตรงกับชื่อบัฟเฟอร์)

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