Vi & Vim

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

4
ออกจากโหมด Terminal ใน Neovim
ฉันไม่สามารถคิดออกว่าจะกลับไปที่Normalโหมดหลังจากที่เข้ามาTerminalในInsertโหมด ... การหลบหนีดูเหมือนจะไม่ทำงาน ความคิดใด ๆ
60 neovim 

3
ทำไมเป็นกลุ่มใช้ hjkl สำหรับปุ่มเคอร์เซอร์?
เหตุใดจึงต้องใช้ปุ่มต่าง ๆhjklในบรรทัดเดียวกันแทนที่จะเป็นปุ่มในรูปสามเหลี่ยมเช่นwasdใช้เล่นวิดีโอเกม ทำไมไม่ได้เป็นสิ่งที่เทียบเท่ากับมือข้างขวาเหมือนijklหรือpl;'?

4
จะบันทึกหน้าต่างการแบ่งและการจัดวางบัฟเฟอร์ได้อย่างไร?
ฉันมีงานหลายอย่างที่ฉันทำในที่เก็บเดียว ฉันต้องการสร้าง "พื้นที่ทำงาน" สำหรับการทำงานกับพวกเขา หนึ่งใน "พื้นที่ทำงาน" หรือ "บัฟเฟอร์รูปแบบ" จะมีไฟล์ทั้งหมดที่ฉันต้องการที่จะทำงานในที่เปิดในรูปแบบที่ฉันต้องการ (ใช้^w+v, ^w+sการแบ่งหน้าต่าง) จากนั้นเมื่อฉันเริ่มทำงานอื่นฉันต้องการบันทึกเค้าโครงปัจจุบันของฉันย้ายไปยังอีกเค้าโครงหนึ่ง แต่ฉันต้องการกลับไปใช้เค้าโครงก่อนหน้าได้ อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

5
เป็นไปได้หรือไม่ที่จะมีชื่อฟังก์ชั่นเติมตัวแปรอัตโนมัติ ฯลฯ เมื่อใช้กับโปรแกรม?
IDEs จำนวนมากกรอกชื่อฟังก์ชันตัวแปรชื่อเมธอดและอื่น ๆ โดยอัตโนมัติตามประเภทของผู้ใช้ ชื่อที่ดีที่สุดจะเป็นชื่อที่สมบูรณ์ทั้งในไลบรารีของภาษาและสิ่งที่ถูกกำหนดไว้แล้วในไฟล์อื่นของโปรแกรมเดียวกัน ตัวอย่างเช่นฉันพิมพ์โปรแกรม Python ดังต่อไปนี้ hungy = True def eatFood(food): pass if hungry: eatF บรรทัดeatFจะแสดงโดยอัตโนมัติeatFood()เป็นตัวเลือกการเติมข้อความอัตโนมัติที่มีอยู่ Vim มีความสามารถนี้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะเปิดใช้งานได้อย่างไร

1
เด็ก ๆ ยากจนในยูกันดาจาก Vim ได้รับเงินจำนวนเท่าใด? [ปิด]
ตามที่ระบุไว้ภายใต้:help iccf... Vim เป็น Charityware คุณสามารถใช้และคัดลอกได้มากเท่าที่คุณต้องการ แต่คุณควรที่จะบริจาคเงินช่วยเหลือเด็กยากจนในยูกันดา โปรดดูkccด้านล่างหรือเยี่ยมชมเว็บไซต์ ICCF ที่ URL เหล่านี้: http://iccf-holland.org/ http://www.vim.org/iccf/ http://www.iccf.nl/ คุณยังสามารถสนับสนุนการพัฒนา Vim ผู้ให้การสนับสนุนกลุ่มสามารถลงคะแนนสำหรับคุณสมบัติ sponsorดู เงินจะไปยูกันดาต่อไป มีการประเมินจำนวนเงินที่ได้รับการยกให้กับยูกันดาหรือไม่ขอบคุณ Vim ฉันเข้าใจว่าไม่สามารถหาตัวเลขที่แน่นอนได้เนื่องจากการบริจาคไม่ได้ใส่คำอธิบายประกอบด้วยเหตุผลเสมอไป รูปขอบบน / ล่างหรือลำดับความสำคัญจะทำ
55 history-of 

3
รายการประเภทไฟล์ที่รู้จัก
ฉันจะได้รับรายชื่อของประเภทไฟล์ที่กลุ่มในปัจจุบันรู้ได้อย่างไร ฉันต้องการที่จะสามารถทำเช่นนี้เพื่อให้เมื่อ vim ไม่ได้ตรวจสอบชนิดของไฟล์โดยอัตโนมัติฉันสามารถลองประเภทของไฟล์ที่ vim รู้เกี่ยวกับสิ่งนั้นอาจคล้ายกันและดูว่าพวกเขามีการเน้นไวยากรณ์ที่เหมาะสมหรือไม่ ฉันรู้ว่าไฟล์ vimscript ที่เกี่ยวข้องกับ filetypes ถูกวางไว้ในftpluginไดเรกทอรีโดยการประชุม แต่พวกเขาไม่จำเป็นต้อง (ฉันไม่แน่ใจ แต่ฉันไม่คิดว่าไฟล์ vimscript ในftpluginไดเรกทอรีนั้นพิเศษ) ดังนั้นฉันต้องการเพียงแค่ ถามเป็นกลุ่มว่าไฟล์ชนิดใดที่รู้เกี่ยวกับว่ามันเรียนรู้เกี่ยวกับพวกเขาอย่างไร

2
ปิดและยกเลิกการโหลดบัฟเฟอร์โดยไม่ต้องออกเป็นกลุ่ม
:clo!บ่อยครั้งที่ผมจะโหลดข้อมูลบางอย่างเป็นบัฟเฟอร์ชั่วคราวและจากนั้นปิดมันด้วย แต่สิ่งนี้ซ่อนบัฟเฟอร์มากกว่าที่จะทำการขนถ่ายทั้งหมดแม้ว่าฉันจะnohiddenตั้งค่าไว้แล้วก็ตาม ฉันพบว่ามันน่าเบื่อเพราะฉันได้รับการยืนยันเป็นพิเศษเมื่อฉันออกจากกลุ่มเกี่ยวกับเนื้อหาที่ฉันทิ้งไปแล้ว ฉันสามารถใช้:q!แทนได้ แต่มันก็เป็นนิสัยที่ไม่ดีที่จะเข้าไปเพราะมันจะออกจากกลุ่มทั้งหมดถ้ามีบัฟเฟอร์เหลือเพียงอันเดียวซึ่งน่ารำคาญเช่นกัน แย่กว่านั้นถ้าฉันพิมพ์ผิด:qa!ฉันอาจสูญเสียงานมาก มีพื้นกลางหรือไม่ ฉันต้องการคำสั่งที่ฆ่าบัฟเฟอร์ปัจจุบัน แต่ไม่ได้ออกจากกลุ่ม ฉันไม่ได้คัดค้านการเขียนใน Vimscript แต่ฉันควรหลีกเลี่ยงหากคำสั่งนั้นมีอยู่แล้ว

11
วิธีค้นหาและแทนที่ Vim โดยไม่ต้องพิมพ์คำต้นฉบับ?
ฉันต้องการเพิ่มประสิทธิภาพเวิร์กโฟลว์ "ค้นหาและแทนที่" ใน Vim มันเป็นสิ่งที่ฉันทำบ่อยๆเพราะฉันมั่นใจว่าพวกคุณส่วนใหญ่ก็เช่นกัน โดยปกติบางสิ่งบางอย่างตามแนว - คัดลอกบล็อกและเปลี่ยนชื่อของตัวแปรในไม่กี่แห่ง ฉันรู้ว่าฉันรู้ว่าอาจเป็นสาเหตุของการสะท้อน "ทำไมคุณคัดลอกและวางรหัส" แต่อย่าไปลงที่ถนนนั้น ... มีกรณีการใช้งานที่ถูกต้องมากมาย :) ฉันตระหนักดีถึงการค้นหาและแทนที่คำสั่ง: :sหรือ:%sแต่ฉันไม่ชอบพวกเขา มันบังคับให้ฉันพิมพ์ทั้งชื่อตัวแปรแบบเต็มที่ฉันค้นหาและสิ่งที่ฉันเปลี่ยนไป อาจจะมีวิธีที่ดีกว่าในการแก้ไขปริมาณการพิมพ์ด้วย:%s? ฉันมักจะใช้ชื่อตัวแปรอธิบายยาว ๆ เพื่อที่จะเป็นตัวแบ่งข้อตกลงสำหรับฉัน ฉันไม่ชอบว่าการพิมพ์ชื่อตัวแปรตั้งแต่ต้นนั้นเป็นเรื่องที่พิมพ์ได้ง่ายและสามารถใช้เวลาและสมองกำลังตามล่าตัวพิมพ์ผิด ฉันชอบพิมพ์ครั้งเดียวแล้วคัดลอกและวางเพื่อหลีกเลี่ยงปัญหานี้โดยสิ้นเชิงถ้าเป็นไปได้ เวิร์กโฟลว์ปัจจุบันของฉันใช้การเคลื่อนไหว / ดึง / เลือก / ค้นหา / วางเพื่อย้ายไปรอบ ๆ ไฟล์และแทนที่ทีละไฟล์ มันไม่ดี แต่มีประโยชน์ในการหลีกเลี่ยงการพิมพ์ชื่อตัวแปรแบบเต็ม ฉันอาจต้องพิมพ์ตัวอักษรสองสามตัวแรกด้วย/หรือใช้คำสั่งการเคลื่อนไหวอื่น (เช่นfx) ขึ้นอยู่กับสิ่งที่อยู่รอบ ๆ แล้วกดveเพื่อเลือกคำทั้งหมด ฉันไม่สนใจว่าฉันต้องทำซ้ำทุกครั้ง ฉันไม่เคยทำการค้นหาแบบเต็มโดยไม่ยืนยันการเปลี่ยนแปลงแต่ละครั้ง แต่มันจะดีกว่าถ้าฉันสามารถทำซ้ำการดำเนินการแทนด้วยการกดแป้นเดียว (ซึ่งฉันไม่สามารถทำได้ด้วยวิธีนี้) แต่ละทดแทนมักจะเป็นสิ่งที่ต้องการnจากนั้นveแล้วp(หรือแย่"0p) มีวิธีที่เร็วกว่านี้ไหม

4
ฉันจะแสดงหมายเลขบรรทัดสัมพัทธ์ได้อย่างไร
คำสั่ง vim จำนวนมากสามารถใช้หมายเลขที่อ้างถึงจำนวนบรรทัดที่คำสั่งจะดำเนินการ เป็นไปได้หรือไม่ที่จะแสดงหมายเลขบรรทัดที่สัมพันธ์กับบรรทัดปัจจุบัน สิ่งต่อไปนี้: 3: some text here 2: more text 1: This is the line above where the cursor is 0: The cursor is on this line 1: This is the line after the cursor 2: More text here

4
ฉันจะรวม gdb กับ Vim ได้อย่างไร?
แทนที่จะเป็นgdbtuiหรือctrl+xใต้gdbซึ่งจะแสดงซอร์สโค้ดที่ด้านบนของหน้าจอฉันต้องการเห็นสิ่งนี้ในโปรแกรมแก้ไข Vim ที่จะข้ามไปมาระหว่างแท็บและบัฟเฟอร์ตามลำดับ ฉันจะทำสิ่งนี้ได้อย่างไร

2
ฉันจะรับเป็นกลุ่มเพื่อหยุดแสดงความคิดเห็นต่อหน้าบรรทัดใหม่ได้อย่างไร
ฉันกำลังแก้ไข.vimrcไฟล์ของฉันและฉันก็รวมถึงความคิดเห็นด้วย เมื่อฉันมีความคิดเห็นเช่นนี้: " example comment จากนั้นกด Enter ที่ท้ายบรรทัดหลังจากเสร็จความคิดเห็นบรรทัดถัดไปจะถูกตั้งค่าโดยอัตโนมัติเป็นความคิดเห็น (เครื่องหมายคำพูดจะถูกแทรกโดยอัตโนมัติ): " example comment " ฉันจะหยุดพฤติกรรมนี้ได้อย่างไร

3
ฉันจะตั้งค่าไม้บรรทัดที่คอลัมน์ที่ต้องการได้อย่างไร
เมื่อโค้ดในภาษาต่าง ๆ ฉันมักจะต้อง จำกัด บรรทัดของฉันให้มีความยาวเฉพาะ (ปกติ 79 หรือ 80 ตัวอักษร) ฉันเคยเห็นสิ่งนี้ทำในบรรณาธิการอื่น ๆ ผ่านการใช้ไม้บรรทัด (เส้นทึบแสดงที่คอลัมน์) หรือโดยการเปลี่ยนสีของข้อความเพื่อระบุว่ามันผ่านไปแล้ว ฉันจะให้ Vim บอกฉันได้อย่างไรเมื่อฉันเข้าใกล้หรือเกิน 79 ตัวอักษรในหนึ่งบรรทัด?

3
ฉันจะดึง (คัดลอก) อักขระเดียวที่เคอร์เซอร์วางอยู่ได้อย่างไร
ฉันรู้หลายวิธีในการคัดลอกสิ่งต่าง ๆ : yiw= ดึงในคำปัจจุบัน yaw= ดึงทุกคำ (รวมถึงช่องว่างท้าย) yy = ดึงสายปัจจุบัน 3yy= ดึงสามบรรทัดที่เริ่มต้นที่ปัจจุบัน yap= ดึงทุกย่อหน้า (รวมถึงขึ้นบรรทัดใหม่) ฉันยังสามารถลบหรือเปลี่ยนอักขระเดียว: x= ลบอักขระภายใต้เคอร์เซอร์ r= แทนที่อักขระใต้เคอร์เซอร์ แต่คุณจะคัดลอกอักขระเพียงตัวเดียวในโลกได้อย่างไร? แรงจูงใจของฉันคือฉันกำลังเขียนโปรแกรมใน Perl 6 และตัวดำเนินการบางตัวเป็นอักขระ Unicode ตอนนี้ฉันกำลังใช้รหัส Perl 6 Config :: INI ของ tadzikเป็นจุดเริ่มต้นสำหรับ parser ที่กำหนดเองเช่นและฉันอยากจะคัดลอกตัวอักษรภาษาฝรั่งเศสตัวเดียว (ตัวดำเนินการไฮเปอร์)จากบรรทัดนี้ : my %hash = $<sections>».ast; ฉันสามารถใช้โอเปอเรเตอร์ไฮเปอร์เวอร์ชัน "Texas" สองตัวละคร>>แต่ฉันคิดว่ามัน>»ดูดีกว่าและคลุมเครือน้อยกว่า>>>: my %hash = $<sections>>>.ast;

3
ฉันจะโหลด vimrc ของฉันใหม่ได้อย่างไรโดยไม่ต้องออกจาก Vim
เมื่อฉันทำการเปลี่ยนแปลง.vimrcฉันมักจะออกเป็นกลุ่มและเปิดมันอีกครั้ง มีวิธีที่ง่ายกว่าในการโหลดการ.vimrcเปลี่ยนแปลงใหม่หรือไม่
49 vimrc 

4
ฉันจะย้ายเส้นได้อย่างง่ายดายได้อย่างไร?
คำสั่ง (หรือทางลัด) เพื่อย้ายบรรทัดขึ้นหรือลงในกลุ่มคืออะไร? เวิร์กโฟลว์ปัจจุบันของฉันคือการดึง (คัดลอก) บรรทัดและกว่าลบบรรทัดนั้นและแทนที่จะวาง (วาง) บรรทัดนั้น

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