Vi & Vim

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

2
ฉันจะให้ Vim สามารถรันทั้ง python และ python3 บนระบบ Linux ในเซสชันเดียวกันได้อย่างไร
บนระบบ Linux, Vim ที่แพ็กเกจมักมีเพียงหนึ่งpythonหรือpython3เปิดใช้งาน เป็นไปได้ที่จะเปิดใช้งานทั้งคู่ (ใช้python/dynและpython3/dyn) แต่ในระหว่างเซสชันสามารถใช้งานได้เพียงครั้งเดียว การสนทนารายชื่อผู้รับจดหมายนี้กล่าวว่า : ขึ้นอยู่กับวิธีการสร้างไลบรารี่ของ Python บนระบบที่ใช้เดเบียน (ด้วยเหตุผลที่ฉันจำไม่ได้ในทันที) พวกมันถูกสร้างขึ้นเพื่อให้ RTLD_GLOBAL ต้องใช้เพื่อเข้าถึงสัญลักษณ์ สิ่งนี้ป้องกันการโหลดทั้ง libpython2.x และ libpython3.x ในกระบวนการเดียวกัน ฉันสามารถทำอะไรได้บ้างเพื่อเปิดใช้งานการโหลดทั้งสองอย่างในเซสชันเดียวกัน ตัวเลือกที่ฉันเห็น: สร้าง Python {2,3} แพ็คเกจใหม่เพื่อRTLD_GLOBALไม่ให้จำเป็นต้องมีสิ่งใด ๆ อย่างใดทำให้ห้องสมุดโหลดก่อนหน้านี้เพื่อยกเลิกการโหลด (?!) โดย Vim (นั่นเป็นไปได้หรือไม่) สำหรับรายการใด ๆ ของ distro ให้สมมติเพื่อเพิ่มความจำเพาะ: Debian-based อูบุนตู Ubuntu 14.04 หรือ Arch Linux หากระบบที่ใช้เดเบียนซับซ้อนเกินไป โปรดทราบว่าฉันมีVim ให้สร้างด้วยการรองรับการโหลดแบบไดนามิกสำหรับทั้งสองดังนั้นการสร้าง Vim จึงไม่ใช่ปัญหา

5
วิธีที่ง่ายที่สุดในการแทรกอักขระ Unicode ลงในเอกสารคืออะไร
เมื่อเขียนเอกสารเป็นครั้งคราวฉันต้องการแทรกอักขระ Unicode ลงในข้อความ บางครั้งฉันรู้รหัสตัวอักษรและบางครั้งฉันก็ค้นหาบนเว็บ ขณะนี้ฉันไปที่โหมดแทรกแล้วใช้<Ctrl-V>u{four digit hex number}ซึ่งอาจลำบากมาก มีวิธีที่ง่ายกว่าในการแทรกอักขระ (อาจเป็นรูปแบบของการวาง)?

4
ฉันจะสร้างและดูแลรักษาตารางได้อย่างไร?
นี่คือตารางที่ฉันใช้ในเอกสารบางส่วน: +---------------+------------------------+---------------------------------------+ | TASK NAME | WHEN | DESCRIPTION | +---------------+------------------------+---------------------------------------+ | db:seed | On every update | Data required for the application to | | | | run; you should always be able to | | | | safely execute this multiple times | | | | for an …

3
จะเปลี่ยนเฉพาะภายในการเลือกภาพได้อย่างไร
หนึ่งจะได้รับเป็นกลุ่มเพื่อแทนที่ตัวละครในการเลือกภาพเท่านั้นและไม่ได้ที่อื่นในบรรทัด? ตัวอย่าง: เส้น: int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/}; การเลือกภาพ: { 00 01 02 03 04 05 05 /*... lots more like this*/} คำสั่ง: :'<,'>s/\ /\,0x/g ที่คาดว่าจะ int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/}; อย่างไรก็ตามหลังจากดำเนินการเหล่านี้แล้วผลลัพธ์ที่แท้จริงคือ: int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and …

3
เหตุใด ci "สามารถอยู่นอกพื้นที่ที่ยกมาและ ci (ใช้ได้เฉพาะในวงเล็บเท่านั้น?
เมื่อใช้ci"เคอร์เซอร์ไม่จำเป็นต้องอยู่ในพื้นที่ที่ยกมาเป็นสองเท่า |String somestring = "some text"; สมมติว่าท่อเป็นตำแหน่งเคอร์เซอร์ci"จะทำให้มันข้ามไปยังพื้นที่ที่ยกมา ในทางกลับกันเมื่อใช้ci(เคอร์เซอร์จะต้องอยู่ในวงเล็บเพื่อให้สามารถใช้งานได้และจะไม่ย้ายเคอร์เซอร์ข้างใน อะไรคือสาเหตุของพฤติกรรมที่แตกต่าง? ฉันคิดว่ามีวิธีการแมปปุ่มเพื่อให้พฤติกรรมนี้มีอยู่ มีข้อบกพร่องในการทำเช่นนี้หรือไม่?

8
ฉันจะย้ายในแนวตั้งจนกว่าจะถึงตัวละครที่ไม่ใช่ช่องว่างได้อย่างไร
ในไฟล์ที่ยาวมากซึ่งมีรหัส (ถูกต้อง -) การเยื้องอาจเป็นประโยชน์ในการเลื่อนไปยังบรรทัดข้อความด้านบนหรือด้านล่างเคอร์เซอร์โดยตรงเพื่อลดการเยื้อง (วิธีหนึ่งในการทำเช่นนี้อาจทำได้ผ่านการเยื้องของวิธีการเยื้องโดยการพับระดับการเยื้องในปัจจุบันซึ่งยุบบรรทัดเพื่อลดระดับการเยื้องเป็นเพียงหนึ่งjหรือkอยู่ห่างจากเคอร์เซอร์อย่างไรก็ตามฉันพบอินสแตนซ์ที่การเยื้องพับไม่ได้ สามารถทำงานในการเยื้องฉันสนใจ) นี่คือตัวอย่างโดยที่เคอร์เซอร์ทำเครื่องหมายขีดล่าง_(ที่คอลัมน์อักขระที่สองระหว่างคำจำกัดความของclass Bazzและclass Qux) แต่ลองจินตนาการว่าจำนวนย่อหน้าหรือบรรทัดภายในmodules ไม่เป็นที่รู้จักหรือตัวแปร: module Foo # lots of code... end module Bar class Baz # ... end class Bazz # lots of code... end _ class Qux # ... end class Quux # lots of code... end end ... วิธีสามารถฉันได้อย่างรวดเร็วไปที่oการmodule Barดังกล่าวข้างต้นเคอร์เซอร์หรือnของendด้านล่างเคอร์เซอร์ที่บรรทัดสุดท้ายมาก? โปรดทราบว่าคอลัมน์แนวตั้งมีช่องว่าง …

5
ฉันจะเปิดไฟล์ขนาดใหญ่มากด้วยประสิทธิภาพที่ดีได้อย่างไร
ฉันมีไฟล์บันทึกเซิร์ฟเวอร์ที่มีขนาดหลายกิกะไบต์ (บน Ubuntu) เมื่อฉันพยายามเปิดมันเทอร์มินัลก็ล็อคเอาไว้หนึ่งนาทีหรือมากกว่านั้นในขณะที่ไฟล์นั้นถูกโหลดเข้า Vim มีวิธีการลดเวลานี้ตัวอย่างเช่นโดยการตั้งค่าเป็นกลุ่มเพื่อโหลดไฟล์ตามต้องการหรือโดยวิธีอื่น?


1
วิธีการติดตั้ง NERDTree ด้วย Vundle
ฉันเริ่มใช้ Vim และฉันเลือก Vundle แทนที่จะเป็น Pathogen ฉันต้องการทราบว่าฉันสามารถติดตั้ง NERDTree โดยใช้ Vundle ได้หรือไม่ ฉันเริ่ม Vim และค้นหา NERDTree เช่นนี้: :BundleSearch NERDTree แต่มันไม่ได้ค้นหาปลั๊กอินเท่านั้น: "Keymap: i - Install plugin; c - Cleanup; s - Se| arch; R - Reload list |~ "Search results for: NERDTree |~ Plugin 'nerdtree-ack' |~ Plugin 'FindInNERDTree'

2
จะบันทึกไฟล์ที่ฉันไม่มีสิทธิ์เขียนได้อย่างไร?
บางครั้งมันเกิดขึ้นที่ฉันเปิดไฟล์และทำการปรับเปลี่ยนบางอย่างในฐานะผู้ใช้ของฉันเองโดยไม่สังเกตเห็นหรือ "ลืม" เพื่อสังเกต[read-only]คำเตือนในบรรทัดสถานะ (เช่น/etcไฟล์ config แบบสุ่มบางอย่าง/etc/resolv.conf) :w!เห็นได้ชัดว่าล้มเหลวในกรณีนี้เนื่องจากผู้ใช้ของฉันไม่มีสิทธิ์ในการเขียนอยู่แล้ว ดังนั้นฉันต้อง:w /home/filenameออกและsudo mv ...อึดอัดมาก มีวิธีใดบ้างที่ฉันเลื่อนระดับชั่วคราวไปที่รูทเพื่อให้สามารถบันทึกไฟล์ที่เปิดในปัจจุบันได้ (ฉันอยู่ในsudoersหรือ / และฉันสามารถsuโดยตรง)?

6
เสร็จสิ้นการเป็นกลุ่มรหัสสำหรับ Python 3
ฉันใช้ Debian Jessie และใช้ vim-nox ปัจจุบัน (พร้อม + python -python3) ฉันมีช่วงเวลาที่ยากลำบากในการลองโปรแกรมใน Python 3 เนื่องจากฉันต่อสู้กับการทำให้โค้ด Python 3 เสร็จสมบูรณ์ YouCompleteMe ไม่รองรับ Python3 เลย jedi-vim รองรับ Python 3 ที่สมบูรณ์ แต่ถ้าฉันมีตัวเลือก + python3 เท่านั้นถ้าฉันเข้าใจถูกต้อง จากโพสต์หลายรายการจากนักพัฒนา Debian ดูเหมือนว่าการรวบรวม Vim ด้วยแฟล็ก + python3 นั้นใช้งานไม่ได้ ดังนั้นฉันเหลือปลั๊กอิน python-mode นอกเหนือจากข้อเท็จจริงที่ว่าโหมดของหลามนั้นดูเหมือนจะไม่ได้ถูกทำให้ไร้ประโยชน์ (ดู pull-Request และ last commits) และในปัจจุบันมีข้อผิดพลาดอย่างมากเกี่ยวกับเชือกในสาขาหลักของมันมันรบกวน YouCompleteMe ฉันจะได้รับโค้ด Python …

2
แท็บยืดหยุ่นในกลุ่มเป็นกลุ่ม?
มีปลั๊กอินหรือคุณสมบัติในตัวใน Vim ที่อนุญาตให้ใช้แท็บยืดหยุ่นได้หรือไม่? ฉันค้นหาเล็กน้อยและพบการอ้างอิงบางส่วนบอกว่ามันเป็นไปไม่ได้ใน Vim แต่มันค่อนข้างเก่า มีวิธีที่จะมีแถบยืดหยุ่นใน Vim หรือไม่? ฉันสบายดีด้วยวิธีแก้ปัญหาสำหรับ Neovim เช่นเดียวกับที่ฉันใช้อยู่ดี

3
ค้นหาและแทนที่ด้วยนิพจน์ทั่วไป
ฉันมีไฟล์ที่มีค่าเริ่มต้นของผู้ใช้เป็นจำนวนมากฉันต้องการเปลี่ยนข้อความบางส่วน แต่ฉันกำลังต่อสู้กับผู้จับคู่และผู้แทนที่ ใช้ตัวอย่างต่อไปนี้: ############################################################################### # Trackpad, mouse, keyboard, Bluetooth accessories, and input # ############################################################################### # Trackpad: enable tap to click for this user and for the login screen defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true ฉันต้องการแทนที่# Trackpad: ...ด้วยrunning "Trackpad: ..." เมื่อหมดปัญหาฉันก็พบกับบางสิ่งที่ใช้เครื่องมือทดสอบ regex: /\n\n#\s(.*)/g ถ้าฉันลองและใช้สิ่งนี้เป็นกลุ่มมันไม่ได้ผลสำหรับฉัน: :/\n\n#\s(.*)/running "\1"/g ฉันเดาว่าปัญหาของฉันเดือดร้อนเหลือคำถามสองข้อ: ฉันจะหลีกเลี่ยงการค้นหา\nตัวอักษรและให้แน่ใจว่า#จะไม่ปรากฏในตอนท้ายของกลุ่มการค้นหา? ฉันจะใช้กลุ่มการดักจับได้อย่างมีประสิทธิภาพได้อย่างไร มีคำตอบที่ดีบางข้อด้านล่าง ยากที่จะเลือกระหว่างทั้งสาม …

2
วิธีการบล็อกรหัสแทนที่ในโหมดภาพ?
ฉันมีรายการที่ฉันต้องการแทนที่อักขระสองตัวแรก: a) item 1 b) item 2 c) item 3 วิธีที่เร็วที่สุดในการทำสิ่งนี้คือ: * item 1 * item 2 * item 3 ฉันมีวิธีการที่มีโหมดภาพ (Ctr-v, jjj แต่ต้องทำสองคำสั่งแทนที่ Iirc การแทนที่นี้สามารถทำได้ด้วย 1 คำสั่ง)


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