คำถามติดแท็ก key-bindings

การดำเนินการเมื่อกดปุ่ม สิ่งเหล่านี้เรียกว่าการแมปกุญแจหรือการแมป สำหรับคำถามเกี่ยวกับการผูกคีย์เริ่มต้นรวมถึงการสร้างหรือกำหนดนิยามการโยงคีย์ใหม่

1
z หมายถึงอะไรในกลุ่ม?
ฉันค้นหาเคล็ดลับเกี่ยวกับการเลื่อนหน้าจอและพบเคล็ดลับต่อไปนี้: zz = shift current line to middle of screen zt = shift current line to top of screen zb = shift current line to bottom of screen คำถามของฉันคือสิ่งที่เป็นz? มันหมายถึงอะไร ฟังก์ชั่นอื่น ๆ ที่อาจzมี?

2
ฉันจะกำหนดการเชื่อมโยงคีย์ปลั๊กอินใหม่ได้อย่างไร
ฉันติดตั้งปลั๊กอินที่ไม่มีกลไกในการปิดใช้งานการแมปคีย์ที่กำหนดไว้ ฉันต้องการกำหนดหนึ่งในการแมปใหม่ ( <leader>cc) ที่กำหนดโดยปลั๊กอินสำหรับ pursope ของฉันฉันพยายามใส่บรรทัดต่อไปนี้ในของฉัน.vimrc: noremap <leader>cc echo "my purpose" แต่สิ่งนี้ใช้งานไม่ได้<leader>ccยังคงดำเนินการคำสั่งปลั๊กอิน ฉันจะกำหนดการแมปของฉันอย่างไรเพื่อแทนที่ทับการกำหนดโดยปลั๊กอิน?

1
อะไรคือความแตกต่างระหว่าง“ ลำดับคีย์ที่แมป” และ“ รหัสคีย์”? (timeoutlen v ttimeoutlen)
คู่มือที่เป็นกลุ่มบอกว่าเราสามารถใช้timeoutlenเพื่อระบุความยาวหมดเวลาของคีย์ลำดับที่แมปและสามารถใช้ttimeoutlenเพื่อระบุความยาวหมดเวลาของการคีย์รหัส : การตั้งค่าที่มีประโยชน์จะเป็น :set timeout timeoutlen=3000 ttimeoutlen=100 (หมดเวลาในการทำแผนที่หลังจากสามวินาทีหมดเวลากับรหัสที่สำคัญหลังจากที่สิบวินาที) อะไรคือคีย์รหัส ? พวกเขาแตกต่างจากลำดับของคีย์ที่แมปอย่างไร ฉันรู้ว่าตัวอย่างของลำดับคีย์แมปjkมาจากแผนที่ด้านล่าง: inoremap jk <esc> ในตัวอย่างนี้เมื่อฉันอยู่ในโหมดแทรกและประเภทj, กลุ่มจะรอtimeoutlenมิลลิวินาทีสำหรับฉันที่จะกดkก่อนตัดสินใจว่าเจตนาของฉันคืออะไร แต่รหัสสำคัญคืออะไรและttimeoutlenมีผลกับมันอย่างไร ขอบคุณ.

1
กำหนดว่าปลั๊กอินใดรับผิดชอบการเชื่อมโยงคีย์
ฉันกำลังจะตอบคำถาม แต่รู้ว่าคำตอบของฉันขึ้นอยู่กับการเชื่อมโยงคีย์ที่ได้รับจากปลั๊กอินที่ฉันติดตั้ง ยิ่งไปกว่านั้นฉันไม่รู้ว่าปลั๊กอินตัวใดมีให้ วิธีเดียวที่ฉันรู้ในการแก้ปัญหานี้คือ "การค้นหาแบบไบนารี" ปลั๊กอินที่ติดตั้งของฉันโดยการปิดการใช้งานครึ่งหนึ่งและเปิดใช้งานอีกครึ่งหนึ่ง ฉันใช้ Vundle เพื่อจัดการปลั๊กอินของฉันดังนั้นการวนซ้ำแต่ละครั้งจะกำหนดให้ฉันแสดงความคิดเห็นเฉพาะส่วนของรายการปลั๊กอิน แต่ยังคงเป็นกระบวนการที่เงอะงะ มีวิธีที่ดีกว่าในการพิจารณาว่าปลั๊กอินใดรับผิดชอบต่อการเชื่อมโยงคีย์ที่กำหนด? มีวิธีการตรวจสอบว่าการผูกคีย์ที่กำหนดให้โดยvimrcไฟล์ของฉันโดยตรงหรือไม่? ฉันรู้ว่า Vim ไม่มีความคิดในตัวของปลั๊กอินดังนั้นอาจเป็นคำถามที่ใช้ถ้อยคำอย่างแม่นยำมากขึ้นว่า

4
ฉันจะใช้คำสั่งกับทุกบรรทัดได้อย่างไร
หากฉันต้องการเยื้องบรรทัดทั้งหมดในเอกสารฉันสามารถพิมพ์>Gเพื่อใช้กับบรรทัดปัจจุบันและด้านล่างตามด้วยและ>ggเพื่อใช้กับบรรทัดข้างต้น มีชุดค่าผสมที่ฉันสามารถใช้เพื่อนำ>ไปใช้กับทุกบรรทัดในคราวเดียวได้หรือไม่?

3
ฉันจะทำให้ 'n' ก้าวไปข้างหน้าได้อย่างไรแม้ว่าฉันจะเริ่มค้นหาด้วย '?' หรือ '#'?
กลุ่มมี (อย่างน้อย) ชุดคำสั่งสองชุดที่ค้นหาในทิศทางตรงกันข้าม การพิมพ์/จากนั้นรูปแบบจะค้นหาไปข้างหน้าผ่านเอกสารเพื่อหารูปแบบ พิมพ์?แล้วรูปแบบจะค้นหาย้อนหลัง มีความสัมพันธ์เดียวกันระหว่างคำสั่ง*และ# สิ่งที่ฉันไม่ชอบคือคำสั่งเหล่านี้ยังกำหนดทิศทางการค้นหาสำหรับnและNคำสั่ง หลังจากใช้ไป/แล้วให้nเดินหน้าเอกสารและNย้อนกลับ หลังจากที่ใช้?, nไปข้างหลังและNไปข้างหน้า (ในคำอื่น ๆnไปในทิศทางเดียวกันเสมอกับการค้นหาเดิมและNไปในทิศทางอื่นเสมอ) ฉันnจะก้าวไปข้างหน้าผ่านเอกสารและNถอยหลังได้อย่างไรโดยไม่คำนึงถึงทิศทางที่ฉันเริ่มค้นหา

1
อะไรคือความแตกต่างระหว่างคำสั่ง map, noremap, abbrev และ noreabbrev?
คำสั่งเหล่านี้เปลี่ยนการกดแป้นหนึ่งชุดไปเป็นชุดอื่น แต่อย่างใด แต่ฉันค่อนข้างคลุมเครือซึ่งคำสั่งหนึ่งเหมาะสมที่สุดสำหรับบางสถานการณ์ นอกจากนี้ยังมี!สายพันธุ์ของพวกเขาเช่นกัน ในขณะนี้การใช้งานของพวกเขานั้นค่อนข้างจับจดดังนั้นฉันจะรู้ได้อย่างไรว่ามีข้อผิดพลาดอะไรบ้าง โดยเฉพาะอย่างยิ่งหมายเหตุเกี่ยวกับรุ่นของโหมดต่าง ๆ อาจมีประโยชน์เนื่องจากฉันได้เรียนรู้จาก Peter Rincker ในความคิดเห็นที่cmapสามารถขยายได้ทุกที่ในบรรทัดและไม่เพียง แต่เมื่อฉันใช้:คำสั่ง ฉันสามารถใช้ความระมัดระวังแบบใดกับข้อผิดพลาดที่อาจเกิดขึ้นได้

1
ทำความเข้าใจกับการผสมผสาน CTRL-U
ในคำตอบนี้ฉันต้องเผชิญกับการCTRL-Uใช้งานในการเรียกใช้ฟังก์ชั่นหลัง:และก่อนชื่อฟังก์ชั่นจริง :nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr> นี่คือสิ่งที่ช่วยพูดว่า: CTRL-U Scroll window Upwards in the buffer. The number of lines comes from the scroll option (default: half a screen). If [count] given, first set the 'scroll' option to [count]. ฉันลองด้วยตัวเองและใช้งานได้ตามที่ควร แต่ฉันไม่เข้าใจส่วนที่เกี่ยวกับscrollตัวเลือก พวกเขาหมายถึง'scroll' optionอะไร และนอกจากนี้ยังมีบางสิ่งที่แปลกในโหมดแทรก เท่าที่ฉันเข้าใจมันจะลบทุกอย่างตั้งแต่เคอร์เซอร์จนถึงจุดเริ่มต้นของบรรทัดจากนั้นรวมบรรทัดผลลัพธ์และบรรทัดด้านบน

4
ล้างข้อมูลบรรทัดเร็วกว่า [0] [d] [$]
มีวิธีที่รวดเร็วกว่าในการลบข้อความในบรรทัดกว่า กด0เพื่อข้ามไปยังจุดเริ่มต้นแล้ว กดd$เพื่อลบจนกว่าจะสิ้นสุดบรรทัดหรือไม่ นอกจากนี้จะเกิดอะไรขึ้นถ้าฉันต้องการลบทุกอย่างยกเว้นการเยื้อง มีวิธีทำเช่นนั้นหรือไม่?

4
วิธีที่สะดวกที่สุดในการทำงานกับแป้นพิมพ์ที่แตกต่างกันในกลุ่มคืออะไร?
บางครั้งฉันต้องเขียนคำภาษากรีก แต่เมื่อฉันใช้แป้นพิมพ์ภาษากรีกการกดปุ่มการพูดการพูด<C-p>จะถูกเข้าใจ<C-π>และไม่ใช่คำสั่งที่ฉันตั้งใจ :map <C-p> <C-π>นี้สามารถแก้ไขด้วย ฉันสามารถทำสิ่งนี้กับตัวอักษรทั้งหมดโดยไม่ทำรายการทั้งหมดได้หรือไม่? PS การทำรายการทั้งหมดไม่ได้ผลลัพธ์ที่สมบูรณ์แบบ เช่นqอยู่;บน Gr แป้นพิมพ์ แต่เราไม่ต้องการแมป ถึง q นอกจากนี้ด้วยเหตุผลบางอย่างΖΖ (ซีตาซีตา) ไม่ทำงานหลังจาก:map Ζ Zนั้น และคำสั่งที่ฉันกำหนด\lwไม่สามารถใช้งาน\λςได้

1
ฉันจะแมป d [นับ] d ได้อย่างไร
NB คำสั่งนี้ไม่ได้ซ้ำกับคำสั่ง "d3fg" อย่างไร โปรดอ่านก่อนลงคะแนนเพื่อปิด! ฉันได้มาบิตของอับจนในของฉันการแสวงหาที่จะได้รับการลบการทำงานเล็ก ๆ เช่นคนใหญ่ ปัญหาที่ฉันมีคือฉันไม่สามารถหาวิธีการแมปคำสั่งd3dใหม่ได้ ที่จริงแล้วฉันไม่สามารถเข้าใจได้ว่าพวกเขาทำงานอย่างไรตั้งแต่แรกและไม่พบการกล่าวถึงพวกเขาในความช่วยเหลือของ Vim * d3jตรงไปตรงมา: มันใช้dกับการ3jเคลื่อนไหว 3ddตรงไปตรงมา: มันรันddคำสั่งด้วย "count" ของ 3 d3d ดูเหมือนว่ามันควรจะตรงไปตรงมามันใช้dโอเปอเรเตอร์กับ ... แต่อะไรนะ3d? มันไม่ใช่การเคลื่อนไหว หากคุณพิมพ์3dด้วยตัวเอง Vim จะถือว่าเป็นนับตามด้วยโอเปอเรเตอร์และรออย่างอดทนสำหรับการป้อนข้อมูลเพิ่มเติม และคุณไม่สามารถใช้โอเปอเรเตอร์กับผู้ให้บริการรายอื่นได้ ddไม่ได้อธิบายไว้ในความช่วยเหลือเป็นลำดับของผู้ให้บริการสองราย มันเป็นคำสั่งสองแป้นที่แยกต่างหาก (เปรียบเทียบdcซึ่งไม่ทำอะไรเลย) นอกจากนี้ยังไม่ปรากฏว่าในกรณีที่การวางตำแหน่งการนับมีความยืดหยุ่นสำหรับคำสั่งที่ต้องใช้การกดแป้นสองครั้ง: 2gjเลื่อนเคอร์เซอร์ลงสองบรรทัดหน้าจอ แต่ละg2jทิ้งการกดปุ่มสองครั้งแรกทั้งหมดและเลื่อนเคอร์เซอร์ลงหนึ่งบรรทัด แล้วมันทำงานอย่างไร นี่เป็นกรณีพิเศษในรหัสภายในของ Vim ใช่ไหม มีวิธีใดบ้างที่ฉันสามารถสร้างการd[count]dแมปได้? แก้ไข : มันเป็นวัตถุข้อความหรือไม่ :h text-objectsไม่รวมไว้ในรายการ "คำสั่งการเลือกวัตถุข้อความ" แต่จะรวม dd ในรายการการลบ "จัดกลุ่มจากวัตถุขนาดเล็กไปจนถึงวัตถุขนาดใหญ่" และd2awจะลบคำที่อยู่ใต้เคอร์เซอร์และคำต่อไปนี้ …

2
เบียร์ linter + eslint: ข้ามไปที่ข้อผิดพลาดถัดไป
ฉันใช้eslintด้วยaleเพื่อจาวาสคริปต์รหัสของฉัน หลังจากแก้ไขรหัสบล็อกฉันมักจะมีข้อผิดพลาดเล็กน้อยในการแก้ไข การแก้ไขทำได้โดยการนำทางไปยังบรรทัดที่ผิดพลาดถัดไปเพื่ออ่านปัญหาจากไม้บรรทัดและการแก้ไข หากฉันสามารถข้ามขั้นตอนการนำทางและใช้การเชื่อมโยงคีย์เฉพาะเพื่อนำทางไปยังตำแหน่งของข้อผิดพลาดถัดไป - บรรทัดและหวังว่าคอลัมน์จะดีมาก มีวิธีใช้การเชื่อมโยงคีย์เพื่อนำทางไปยังข้อผิดพลาด lint / ale ถัดไปหรือไม่

2
แก้ไขปุ่มลูกศรที่แสดง A, B, C, D ใน vi (ไม่ใช่ในกลุ่ม)
ฉันรู้ว่าในกลุ่มฉันสามารถเพิ่มได้ set nocompatible ใน.vimrcเพื่อหลีกเลี่ยงปุ่มลูกศรที่แสดง A, B, C, D ในโหมดแทรก แต่ฉันใช้ vi เวอร์ชัน 4.0 (gritter) 12/25/06 ฉันจะได้รับพฤติกรรมเดียวกันได้อย่างไร == แก้ไข == (1) ฉันใช้รุ่น vi จาก Arch Linuxซึ่งสร้างจากที่เก็บ CVSนี้(ส่งมอบครั้งล่าสุด 24 กุมภาพันธ์ 2550) ด้วยคำสั่งต่อไปนี้: make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \ TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8" และวิทยานิพนธ์สามแพทช์: การแก้ไข tubesize-สั้น overflow.patch , navkeys.patchและรักษา-dir.patch == แก้ไข (2) …

1
ฉันสามารถแมป Ctrl + ตัวอักษรตัวพิมพ์ใหญ่แยกต่างหากจาก Ctrl + ตัวพิมพ์เล็กหรือไม่
ฉันกำลังพยายามหาวิธีนำทางหน้าต่างได้เร็วขึ้นเล็กน้อยดังนั้นฉันจึงต้องการแมปต่อไปนี้: :nmap <silent> <C-F> :wincmd f<CR> ปัญหาคือสิ่งนี้แมป^f(ตัวพิมพ์เล็กf) ซึ่งแมปลง มีวิธีใดที่จะทำการแมปใหม่อีกครั้ง^F(ตัวพิมพ์ใหญ่F) และปล่อยให้^fเหมือนเดิมหรือไม่

3
วิธีการเข้าสู่โหมดแทรกเมื่อเข้าสู่บานหน้าต่างเทอร์มินัล neovim
ฉันมีการแมปต่อไปนี้เพื่อให้ง่ายต่อการย้ายออกจากบานหน้าต่างเทอร์มินัลใน neovim: tnoremap <C-h> <C-\><C-n><C-w>h " Workaround since <C-h> isn't working in neovim right now tnoremap <C-w>h <C-\><C-n><C-w>h tnoremap <C-j> <C-\><C-n><C-w>j tnoremap <C-k> <C-\><C-n><C-w>k tnoremap <C-l> <C-\><C-n><C-w>l ปัญหาเดียวคือเมื่อฉันย้ายกลับไปที่บานหน้าต่างเทอร์มินัลฉันต้องกดiเพื่อกลับสู่โหมดแทรก ฉันต้องการให้มันอยู่ในโหมดแทรกเสมอเมื่อฉันย้ายไปที่บานหน้าต่าง neovim ที่กำลังเรียกใช้เทอร์มินัล อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

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