คำถามติดแท็ก cursor-movement

การย้ายเคอร์เซอร์ไปที่อื่นในบัฟเฟอร์

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

5
หลังจากคัดลอกส่วนที่เลือกไปยังแป้นพิมพ์กลับไปที่ตำแหน่งเดิม
เคอร์เซอร์ของฉันอยู่ตรงกลางของย่อหน้าเมื่อฉันตัดสินใจกะทันหันฉันต้องคัดลอกย่อหน้านั้น: ดังนั้นฉันพิมพ์vipเพื่อเลือกย่อหน้าที่มองเห็นได้: ตอนนี้ฉันกดcmd+Cเพื่อคัดลอกไปยังคลิปบอร์ด (อาจแตกต่างกันไปในระบบของคุณ แต่ไม่ควรเกี่ยวข้องกับคำถามกลางของโพสต์ของฉัน) ซึ่งทำให้เคอร์เซอร์ของฉันอยู่ที่จุดเริ่มต้นของย่อหน้า: มากกว่าตำแหน่งที่ต้องการซึ่งเป็นตอนที่ฉันเริ่ม หมายเหตุ: yipปัญหาเดียวกันเกิดขึ้นเมื่อลากเลือกไม่ใช่สายตาด้วย ฉันต้องการพฤติกรรมเริ่มต้นที่จะ "กลับสู่ตำแหน่งเคอร์เซอร์เดิม" หลังจากทำการเลือก / คัดลอกการกระทำเช่นนี้ มีการกำหนดค่าที่ทำให้สิ่งนี้เป็นไปได้หรือไม่?

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

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) และอีกมากมาย

5
ฉันจะย้ายเคอร์เซอร์ไปที่กึ่งกลางของบรรทัดปัจจุบันได้อย่างไร
มีวิธีที่ฉันสามารถเลื่อนเคอร์เซอร์ไปที่กึ่งกลางของบรรทัดปัจจุบันหรือไม่? (ตรงกลางของบรรทัดข้อความ - ไม่ใช่กึ่งกลางของความกว้างหน้าจอ) ฉันสงสัยว่ามีทางลัดคล้ายกับMที่เลื่อนเคอร์เซอร์ไปที่กลางหน้าจอหรือไม่ แก้ไข : เพิ่มความกระจ่างในวงเล็บ

4
เลื่อนหนึ่งในสี่ (25%) ของหน้าจอขึ้นหรือลง
ฉันมักจะพบว่าการเลื่อนหน้าเต็มทำให้สับสนเกินไปครึ่งหน้ามากเกินไป แต่หน้าไตรมาสเหมาะ ขณะนี้ฉันทำได้เพียงกดปุ่มลูกศรค้างไว้ ฉันจะเลื่อน 25% ของหน้าขึ้นและลงได้อย่างง่ายดายได้อย่างไร

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

3
แก้ไขคำที่แตกต่างพร้อมกันหนึ่งบรรทัดเดียวกันใน Sublime Text พร้อมตัวเลือกทวีคูณ
เป็นไปได้หรือไม่ที่จะแก้ไขมากกว่าหนึ่งคำพร้อมกันซึ่งอยู่ในบรรทัดเดียวกัน ตัวอย่างเช่นสมมติว่าฉันมีสิ่งนี้: Spam and Eggs is all you need for a healthy breakfast และฉันต้องการเปลี่ยนบรรทัดเป็น: organic_Spam and organic_Eggs is all you need for a healthy breakfast ฉันต้องการไฮไลต์ "สแปม" และ "ไข่" และเติม "organic_" พร้อมกันเพื่อ "สแปม" และ "ไข่" เล็กน้อยเช่นการใช้บล็อกภาพเพื่อเขียนพร้อมกันในบรรทัดที่แตกต่างกัน แต่ที่นี่เขียนเนื้อหาในบรรทัดเดียวกัน ฉันเห็นเพื่อนร่วมงานทำสิ่งนี้ด้วย Sublime Text และลองใช้ googling แต่ก็ไม่มีประโยชน์

2
วิธีการคืนค่าตำแหน่งของเคอร์เซอร์หลังจากรันคำสั่งปกติ?
ฉันพยายามโค้ดฟังก์ชันที่แทนที่อักขระในคอลัมน์ที่หกของบรรทัดปัจจุบันของฉันด้วยสัญลักษณ์ดอลลาร์ ( $) แต่ฉันต้องการเคอร์เซอร์ของฉันอยู่ในตำแหน่งเดิมก่อนเรียกใช้ฟังก์ชัน ดังนั้นฉันจึงพยายามจัดเก็บคอลัมน์ปัจจุบันดำเนินการเปลี่ยนแปลงของฉันแล้วกลับมาพร้อมกับฟังก์ชั่นต่อไปนี้: function! DollarSplit() let col_number=col(".") "stores the current column number of the cursor normal! 6|r$ " replaces the 6th caracter in line with a $ execute col_number."|" endfunction ฉันอาจจะเข้าใจผิดเกี่ยวกับexecuteคำสั่ง ... หรือบางทีฉันควรสร้างสตริงที่มีคำสั่งที่ฉันต้องการจะดำเนินการ?

3
การทำแผนที่ด้วยการเคลื่อนไหว
ฉันพยายามที่จะเข้าใจว่าฉันจะใช้โอเปอเรเตอร์กับการเคลื่อนไหวที่ตามมาภายในแผนที่ได้อย่างไร ตัวอย่างเช่น: nmap /c c{here we pending for a motion}/<C-r>"<CR> แผนที่ควรทำดังนี้: เปิดใช้งานcโอเปอเรเตอร์และฟังการเคลื่อนไหวครั้งต่อไป เช่นฉันสามารถพิมพ์ที่นี่t,เพื่อเปลี่ยนแปลงทุกอย่างก่อนเครื่องหมายจุลภาคถัดไป ไปที่โหมดแทรกเพื่อลบทุกอย่างระหว่างเคอร์เซอร์และเครื่องหมายจุลภาค; ข้อความที่ถูกลบจะถูกค้นหาโดยอัตโนมัติในรูปแบบ ดังนั้นเพื่อให้ง่ายหลังจากลบข้อความการเคลื่อนไหวฉันออกจากโหมดแทรกพร้อมการเน้นข้อความที่ถูกลบ ฉันจะขอบคุณมากถ้ามีคนช่วยฉันไขปริศนาคดีนี้ UPDATE คำตอบคือสิ่งที่ฉันต้องการ แต่! เมื่อฉันกดพิมพ์สิ่งที่แทนคำนั้นกด/cw <Esc>หลังจากที่ฉันคาดว่าจะทำเช่นเดียวกันกับเหตุการณ์ที่เกิดขึ้นต่อไป แต่หลังจากนำเสนอn(ไปที่เหตุการณ์ถัดไป) และ.(ทำซ้ำคำสั่งสุดท้าย) เพียงแค่เติมข้อความที่พิมพ์ล่าสุดแทนการแทนที่ เป้าหมายหลักของการทำแผนที่คือใช้กับn/Nและ.เพื่อทำซ้ำ ฉันพลาดอะไรไปหรือเปล่า

2
อะไรคือความแตกต่างระหว่าง j, CTRL-J, <NL> และ CTRL-N ในโหมดปกติ?
ฉันเห็นบางแห่งบนเว็บที่มีคนใช้Ctrl-Jและฉันไม่รู้ว่าการทำแผนที่นี้ฉันค้นหาเอกสารที่เกี่ยวข้องและพบสิ่งต่อไปนี้: j or &lt;Down&gt; or CTRL-J or &lt;NL&gt; or CTRL-N [count] lines downward linewise. ซึ่งทำให้ฉันมีคำถามหลายข้อ: คืออะไร&lt;NL&gt; : ฉันจะเห็นว่ามันเป็นเทียบเท่าของ&lt;CR&gt;ตั้งแต่การกดEnterจะลงไปหนึ่งบรรทัดในโหมดปกติโดยค่าเริ่มต้น แต่ทำไมมันเป็น&lt;NL&gt;ที่นี่และไม่&lt;CR&gt;? ความแตกต่างระหว่างการแมปเหล่านี้ : ตัวเลือกทั้งหมด 5 ตัวเลือกเหล่านี้มีหนึ่งบรรทัดในลักษณะเดียวกันหรือไม่? จากการทดสอบของฉันฉันจะตอบว่าใช่ แต่นั่นจะนำไปสู่คำถามต่อไปของฉัน เหตุใดจึงมีการแมป 5 รายการเพื่อทำสิ่งเดียวกัน : ฉันเข้าใจjและ&lt;down&gt;เก็บไว้สำหรับผู้ใช้ที่ไม่คุ้นเคยกับการจับคู่การแมป แต่ทำไมการแมปอื่น ๆ จึงมีอยู่ เมื่อใดจึงจะน่าสนใจที่จะใช้มากกว่าอีกคำถาม: นั่นคือความต่อเนื่องของคำถามก่อนหน้านี้: หากมีความเป็นไปได้มากมายฉันคิดว่าพวกเขามีข้อได้เปรียบที่แตกต่างกันหรือดีกว่าที่จะใช้ในกรณีการใช้งานเฉพาะ กรณีการใช้งานเหล่านั้นคืออะไร? ผมพบความซ้ำซ้อนของคำสั่งเหล่านี้แม้จะแปลกเมื่อฉันมองไปที่อื่น ๆ:h k: มีเพียง 3 วิธีที่จะขึ้นไป: k, และ&lt;UP&gt; ctrl-pดังนั้นคำถามโบนัสคือ: ทำไมมี 5 วิธีที่จะลงไปและเพียง …

1
ตำแหน่งมือสำหรับการนำทางเป็นกลุ่ม
ฉันเป็นผู้ใช้ที่เป็นกลุ่มใหม่และฉันต้องการถามคำถามพื้นฐานนี้เพื่อให้แน่ใจว่าฉันเริ่มเรียนรู้วิธีที่ถูกต้องและไม่พัฒนานิสัยที่ไม่ดี เมื่อคุณใช้ Vim คุณวางตำแหน่งมือขวาของคุณอย่างไร? ฉันพบว่ามันเป็นธรรมชาติมากขึ้นที่จะเริ่มต้นด้วยนิ้วของฉันบนjkl;แป้น แต่จากนั้นฉันก็พบว่าตัวเองขาดhกุญแจทุกครั้งเมื่อฉันนำทาง ตรงกันข้ามถ้าผมวางตำแหน่งนิ้วมือของฉันบนhjklแล้วผมก็พบว่าตัวเอง mistyping คำพูดเช่นนี้ไม่ได้เป็นตำแหน่งที่ผมได้รับการฝึกฝนเพื่อให้มือของฉันบนแป้นพิมพ์และผมพบว่าการสลับjkปุ่มด้วยนิ้วกลางและสามของฉันจะเป็นที่น่าอึดอัดใจ

1
ข้ามไปยังออฟเซ็ตไบต์และแสดงตำแหน่งเป็นออฟเซ็ตไบต์
ฉันสามารถย้ายเคอร์เซอร์ไปที่n THไบต์ในบัฟเฟอร์? ฉันจะแสดงตำแหน่งเคอร์เซอร์ปัจจุบันในไม้บรรทัดในแง่ของการชดเชยไบต์แทนที่จะเป็นเส้นและคอลัมน์ได้อย่างไร (คำถามติดตามผล: สามารถแสดงได้ทั้งทศนิยมและฐานสิบหก?)

1
เหตุใดเคอร์เซอร์จึงเลื่อนไปที่จุดเริ่มต้นของบรรทัดหลัง <Esc>
ฉันสังเกตว่าขณะแก้ไขตามบรรทัดในไฟล์. txt ในโหมดแทรกเคอร์เซอร์จะเลื่อนไปที่จุดเริ่มต้นของบรรทัดหลังจากเขียนโดยใช้ลำดับคีย์: &lt;esc&gt;:w ฉันต้องการเปลี่ยนพฤติกรรมนี้เพื่อให้เคอร์เซอร์อยู่ในตำแหน่งต่อไปนี้: เขียน เป็นไปได้ไหม ฉันไม่ต้องการให้เคอร์เซอร์อยู่ในโหมดแทรกฉันแค่อยากให้มันรักษาตำแหน่งสุดท้ายหลังจากเขียน ฉันใช้ gVim 7.4 บน windows . vimrc ของฉันเป็นแบบพื้นฐานมากฉันไม่เชื่อว่าการตั้งค่าใด ๆ ของฉันจะรบกวนการทำงานนี้ ฉันได้ลบการจัดหา mswin.vim และ example.vim ออกจาก. vimrc ของฉันด้วย (ซึ่งมาพร้อมกับโปรแกรมติดตั้ง windows vim.org อย่างเป็นทางการ) หลังจากอ่านความคิดเห็นด้านล่างฉันดูที่ปัญหาอีกครั้งและตระหนักว่าเคอร์เซอร์เพียงเลื่อนไปทางซ้ายสุดหลังจากเขียนบนบรรทัดซึ่งทั้งหมดประกอบด้วยพื้นที่สีขาวต่อท้าย ในคำอื่น ๆ เคอร์เซอร์เพียงสไลด์ไปทางซ้ายไกลเมื่อ ESC-: W เมื่อสายเป็นเยื้องแขวนที่ไม่มีอักขระอื่น ๆ นอกเหนือจากช่องว่าง . vimrc กำลังจัดการพฤติกรรมเยื้องกับการตั้งค่าเหล่านี้: set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab set …

4
Vim HardMode Fine Grain เคลื่อนไหว
ฉันเพิ่งค้นพบเกี่ยวกับโหมดยากเป็นกลุ่มและฉันตัดสินใจลองใช้ อย่างไรก็ตามฉันพบปัญหาบางอย่างกับการเคลื่อนไหวของเม็ดละเอียด ตัวอย่างเช่นสมมติว่าฉันต้องการเลื่อนขึ้นหรือลงหนึ่งบรรทัดจริงๆ ตั้งแต่jและkถูกปิดใช้งานฉันไม่แน่ใจว่ามีทางเลือกอะไรที่ดีกว่าสำหรับสิ่งนี้ ฉันพบปัญหาเดียวกันเมื่อฉันต้องการย้ายอักขระหนึ่งหรือสองตัวไปทางซ้ายหรือขวา ไม่มีใครรู้ว่าจะใช้วิธีใดในการทดแทนการเคลื่อนไหวประเภทนี้? นี้เป็นปลั๊กอินฉันใช้: https://github.com/wikitopian/hardmode

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