Vi & Vim

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

3
วิธีการข้ามไปที่กลางบัฟเฟอร์
โดยการกดggและGคุณสามารถข้ามไปที่ปลายทั้งสองของบัฟเฟอร์ 42G ข้ามไปที่บรรทัดที่ 42 มีgทางลัดลัดใด ๆ หรือไม่ที่จะข้ามไปที่กลางบัฟเฟอร์ สิ่งที่ชอบประมาณround(number of lines/2)G?

4
วิธีการแทนที่ข้อความภายในด้วยข้อความที่ดึงออก
รูปแบบการแก้ไขที่ฉันพบบ่อยคือ: ฉันต้องการดึงชิ้นส่วนของข้อความในเครื่องหมายคำพูดหรือวงเล็บปีกกาและแทนที่ส่วนของข้อความนั้นในเครื่องหมายคำพูด / วงเล็บคู่อื่น ตัวอย่างเช่นถ้าฉันต้องการคัดลอกชื่อคลาสfoo barและวางที่อื่น: <span class="foo bar"> <div class="this-should-be-replaced-with-foo-and-bar"> สิ่งที่ฉันรู้คือสิ่งนี้: ถ้าฉันย้ายเข้าไปในชั้นเรียนช่วงที่ฉันใช้yi"ในการดึงข้อความภายในคำพูด ตอนนี้ฉันมีสิ่งนี้ในทะเบียนของฉันดังนั้นฉันควรจะสามารถแทนที่เนื้อหาคลาสของ div ด้วย แต่ฉันไม่สามารถหาวิธีที่สะดวกในการทำเช่นนี้ หากฉันใช้ciwสิ่งนี้จะเป็นการเขียนทับการลงทะเบียนด้วยเนื้อหาที่จะเปลี่ยนแปลงดังนั้นฉันจึงหลวมข้อความที่ดึงออก สิ่งที่ดีที่สุดที่ฉันสามารถขึ้นมาจะย้ายไปอ้างเป็นครั้งแรกของการเรียนของ div ตีแล้วลบที่จะพูดต่อไปด้วยpdt" โดยปกติแล้วฉันจะทำให้ตำแหน่งของฉันแย่ลงและฉันก็วางไว้ที่ไหนสักแห่งภายในเครื่องหมายคำพูดที่รวมสองสายเข้าด้วยกันและมันก็ทำให้สิ่งต่าง ๆ สับสน ฉันหวังว่าจะมีวิธีใดที่จะทำชุด "แทนที่ข้อความภายในด้วยเนื้อหาที่ดึงของฉัน" เพื่อให้ง่ายขึ้น

3
Neovim บน windows 10 - พร้อมใช้งานและตั้งค่าอย่างไร
ฉันติดอยู่ที่ windows 10 และต้องการให้ Neovim ยิง พร้อมหรือไม่หรือฉันควรจะตั้งค่า vim ของฉันสักครู่? ฉันไม่ได้เห็นวิดีโอหรือบทความใด ๆ เกี่ยวกับ Neovim ใต้หน้าต่าง แต่เมื่อ googling ฉันพบบางอย่างที่ทำให้ฉันเชื่อว่าอาจมีปัญหาที่ยังไม่ได้รับการแก้ไขอย่างเพียงพอ

2
ฉันจะค้นหาได้อย่างไรเมื่อ vim แสดงเนื้อหาโดยใช้เพจเจอร์“ more”
ฉันต้องการดูค่าของตัวแปรดังนั้นฉันจึงรันคำสั่ง :let Vim แสดงผลลัพธ์ของคำสั่งนี้โดยใช้--more--เพจเจอร์ ฉันจะค้นหาวลีเช่นนี้ได้htmlอย่างไร ฉันได้ดูหน้าเพจสำหรับเพจเจอร์เพิ่มเติมที่ระบุว่า+/ใช้สำหรับการค้นหา แต่ดูเหมือนจะใช้งานไม่ได้และไม่ทำงาน/ตามเพจเจอร์ที่น้อยลง
17 search 

5
รูปแบบไวยากรณ์เป็นกลุ่มเพื่อเน้นอาร์กิวเมนต์คำหลักหลาม
ฉันกำลังดิ้นรนกับการเรียนรู้กลุ่ม regexps (ฉันไม่รู้ regexp อื่น ๆ ได้เป็นอย่างดีเช่นกัน) ดังนั้นปัญหาหลักคือการกำหนด regexp ที่จะจับคู่ some_function_call(simple_value, keyword=value) คำสำคัญในตัวอย่างนี้ ดังนั้นควรจับคู่คำถ้ามันอยู่ใน parens และมีเครื่องหมายเท่ากับหลังจากนั้น ปัญหาต่อไปคือวิธีการกำหนดไฟล์ไวยากรณ์ในกลุ่ม ฉันจะซาบซึ้งในความช่วยเหลือ แต่ไม่ควรเรียนรู้อย่างหนักดังนั้นฉันสามารถทำได้ด้วยตัวเอง แก้ไขตามคำตอบฉันได้ทำความคุ้นเคยกับสคริปต์ไวยากรณ์ของตัวเองสำหรับหลาม รู้สึกอิสระที่จะลอง ป้อนคำอธิบายลิงก์ที่นี่

3
วิธีที่ถูกต้องในการติดตั้ง YouComplete โดยใช้ vim-plug in vim / nvim คืออะไร?
ดูเหมือนว่าเอกสารเฉพาะสำหรับการติดตั้ง YCM สำหรับ Vundle และฉันค่อนข้างใหม่สำหรับ vim-plug and plugins โดยทั่วไปดังนั้นฉันจึงไม่แน่ใจว่าแปลเป็น vim-plug ได้ดีเพียงใด

1
ฉันจะปิดการใช้งาน syntastic สำหรับไฟล์ python ได้อย่างไร
ฉันมีการติดตั้งปลั๊กอินโหมด syntastic และ python และพวกเขาทั้งสองมีตัวตรวจสอบไวยากรณ์ ฉันคิดว่าตัวตรวจสอบไวยากรณ์โหมดหลามมีความหมายมากกว่าสำหรับไฟล์หลามดังนั้นฉันจึงอยากใช้เพียงอันเดียว (แทนที่จะเป็นทั้งสองอย่าง) ฉันจะปิดการใช้งาน syntastic สำหรับไฟล์หลามได้อย่างไร

1
ฉันจะได้เสียงระฆังเทอร์มินัลได้อย่างไรเมื่อฉันสะกดคำผิด
ฉันทำการถอดความอย่างยุติธรรมซึ่งฉันพิมพ์ที่ 100+ wpm โดยไม่ได้ดูที่หน้าจอ ฉันคิดว่ามันจะมีประโยชน์ถ้าเสียงเรียกจะทำให้ฉันได้ยินอะไรบางอย่างหากผู้ตรวจการสะกดได้ทำเครื่องหมายคำสุดท้าย (น่าจะบ่งบอกว่าฉันพิมพ์ผิดและควรตรวจสอบสิ่งที่ฉันเขียน) เครื่องตรวจตัวสะกดสามารถใช้คำไฮไลต์ของไวยากรณ์ที่สะกดผิดทันทีที่ฉันกดแป้นเว้นวรรค มันทำงานอย่างไร มีวิธีเรียกใช้คำสั่งบางอย่างในเวลาเดียวกันหรือไม่? ฉันมักจะใช้เป็นกลุ่มใน terminal; ฉันไม่ได้ตั้งค่าเสียงระฆังเทอร์มินัลในขณะนี้ แต่ถ้านั่นเป็นวิธีที่ง่ายที่สุดที่จะทำฉันอาจสามารถทำงานได้

4
ฉันสามารถทำซ้ำคำสั่ง UI ล่าสุดได้หรือไม่
ฉันรู้ว่าฉันสามารถใช้.เพื่อทำซ้ำคำสั่งแก้ไขล่าสุด มีวิธีการทำซ้ำคำสั่งการจัดการ UI ล่าสุดหรือไม่ ตัวอย่างเช่นฉันสามารถเขียน10<C-W>-เพื่อลดขนาดหน้าต่างสิบแถว มันดีที่จะสามารถกด⟨ บางปุ่ม ⟩เพื่อทำซ้ำคำสั่งนี้ได้อย่างง่ายดายหากฉันต้องการลดขนาดมันอีก

1
ฉันจะรับ + ​​คลิปบอร์ดสนับสนุนใน Fedora 20 ได้อย่างไร
ดูเหมือนว่าผมว่าไม่ว่า"+pมิได้"*pทำงานสำหรับฉัน ฉันจะรู้ได้อย่างไรว่า Vim ของฉันได้รับการติดตั้งและตั้งค่าอย่างเหมาะสมเพื่อให้พร้อมใช้งานหรือไม่ และหากยังไม่ได้ตั้งค่าฉันต้องทำอย่างไรเพื่อตั้งค่า ฉันกำลังใช้งาน Fedora 20 กับ Mate 18.1 ฉันติดตั้งvim-enhancedและvim-x11แพ็คเกจแล้ว และรุ่น Vim ของฉัน: $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 13 2014 08:56:57) Included patches: 1-207, 209-475 Modified by <bugzilla@redhat.com> Compiled by <bugzilla@redhat.com> Huge version without GUI. Features included (+) or not …

4
วิธีแสดงผลการค้นหาสำหรับบัฟเฟอร์ที่เปิดอยู่ทั้งหมด
สิ่งหนึ่งที่ฉันทำบ่อย ๆ (แต่ต้องพึ่งพาบรรทัดคำสั่งที่ต้องทำ) คือการค้นหา / grepping ในหลาย ๆ ไฟล์ มีวิธีแสดงผลการค้นหาสำหรับบัฟเฟอร์ที่เปิดทั้งหมดหรือไม่ โดยหลักแล้วฉันต้องการบัฟเฟอร์แยกใหม่ที่มีตำแหน่งผลลัพธ์และข้อมูลโค้ดคล้ายกับที่grepทำ ตัวอย่าง ( /statistics): models/statistics.php: /*! \file statistics.php controllers/stats.php: $this->load->model('statistics'); controllers/stats.php: // Query statistics... controllers/stats.php: $num_exams = $this->statistics->countExams(); เป็นโบนัสฉันต้องการค้นหาคำภายใต้เคอร์เซอร์เหมือนที่gdทำ

4
ส่งข้อความจากหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่ง
เมื่อเร็ว ๆ นี้มี add-on เพื่อ NeoVim ซึ่งอนุญาตให้เปิด terminal ใน vim buffer สิ่งนี้มีความเป็นไปได้ที่น่าสนใจในการส่งข้อความจากหน้าต่าง vim หนึ่งไปยังการจำลองแบบอื่นเช่น REPL like behavior ในอดีตฉันใช้ tmux สำหรับการกำหนดค่าชนิดนี้ อย่างไรก็ตามตอนนี้ฉันอยากลองใช้ NeoVim เท่านั้น คำถามของฉันคือ - ฉันจะส่งบล็อคข้อความจากกลุ่มหนึ่งไปยังอีกกลุ่มหนึ่งได้อย่างไร หรืออาจจะค่อนข้าง - ฉันจะทำให้ลำดับของการเลือกข้อความเป็นไปได้โดยอัตโนมัติอย่างไรโดยเปลี่ยนเป็นแยกแล้ววาง?

1
เปรียบเทียบรายละเอียดเพิ่มเติมภายในบรรทัด
ฉันใช้vimdiffเพื่อตรวจสอบความแตกต่างระหว่างไฟล์และบางครั้งมันก็พลาดไปเล็กน้อย ตัวอย่างเช่นถ้าฉันมีสองไฟล์ต่อไปนี้: //a.c printf("Hello\n"); และ: //b.c int i = printf("hello\n") + 3; แสดงในvimdiff: สิ่งที่ฉันต้องการเห็นคือใน BC hไม่มีตัวพิมพ์ใหญ่ มีวิธีที่จะบอก vimdiff เพื่อเปรียบเทียบ (ในบรรทัดนั้น) เพียงแค่ส่วนหนึ่งของมัน (ฉันหมายถึงไม่สนใจint i =และ+ 3)
17 vimdiff 

4
วิธีการตั้งค่า Vim ให้ทำงานกับหนึ่งประโยคต่อหนึ่งบรรทัด?
ตอนนี้ฉันกำลังเขียนข้อความธรรมดาจำนวนมาก (และ LaTeX ที่มีการจัดรูปแบบน้อยที่สุดในย่อหน้า) และมันจะดีถ้าฉันสามารถตั้งค่ากลุ่มเพื่อรักษาแต่ละประโยค (สำหรับความเรียบง่ายข้อความถูกยกเลิกด้วย '.', '!' , หรือ '?'; นั่นคือเครื่องหมายวรรคตอนยุติแล้วตามด้วยช่องว่างเพื่อหลีกเลี่ยงการแบ่งจำนวนทศนิยม) ในบรรทัดของตัวเองเพื่อให้ VCS diffs จะมีประโยชน์มากขึ้น น้อยที่สุดฉันต้องการจัดgqรูปแบบข้อความจาก: He lay flat on the brown, pine-needled floor of the forest, his chin on his folded arms, and high overhead the wind blew in the tops of the pine trees. The mountainside sloped …

2
ใช้% ในภาษาที่ไม่มีเครื่องหมายปีกกา
ในภาษา C และ C ฉันสามารถใช้%เพื่อข้ามไปที่เครื่องหมายปีกกาที่สอดคล้องกันที่เคอร์เซอร์อยู่ นี่คือ "เคล็ดลับ" ที่รู้จักกันดี แต่ใน Ruby เช่น: def fun [1, 2].each do |n| end end สิ่งนี้ใช้ไม่ได้เนื่องจากทับทิมไม่ใช้อักขระในmatchpairs(ตั้งค่าเป็น(:),{:},[:],<:>ค่าเริ่มต้น ฉันพยายามตั้งค่านั้น แต่มันไม่ทำงาน: :set matchpairs=def:end E474: Invalid argument: matchpairs=def:end ฉันสามารถใช้มันเพื่อทำงานกับภาษาเช่น Ruby ได้หรือไม่ หมายเหตุนี่ไม่ใช่คำถามเฉพาะทับทิมตัวอย่างอื่น ๆ อาจเป็นเชลล์สคริปต์ ( if/ fi) หรือ Lua ( function/ end) และอีกมากมาย

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