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

คำสั่งที่เลื่อนเคอร์เซอร์ คำสั่งการเคลื่อนไหวถูกใช้หลังจากคำสั่งตัวดำเนินการเพื่อเลื่อนไปเหนือข้อความที่จะดำเนินการ

1
จุดสิ้นสุดของการเคลื่อนไหวบล็อกหลาม
ฉันต้องการการเคลื่อนไหวที่ย้ายไปยังจุดสิ้นสุด / จุดเริ่มต้นของบล็อกหลามและฉันต้องการการเคลื่อนไหวอีกครั้งเพื่อย้ายไปยังจุดเริ่มต้น / จุดสิ้นสุดของวิธีการ / คลาสก่อนหน้า / ถัดไป / คลาส (ชุดค่าผสมทั้งหมด) ฉันได้ลอง vim-indent-object, python-mode, chapa, vim-python-object และอื่น ๆ ไม่มีพวกมันรองรับจุดสิ้นสุดของบล็อกและไม่มีพวกมันรองรับการเคลื่อนไหวทั้งหมดข้างต้น ผมจำได้ว่ากาลครั้งหนึ่งผมมีปลั๊กอินที่ให้]], [[, ][และ[]การเคลื่อนไหวสำหรับต้น / ท้ายของก่อนหน้า / ถัดวิธีการ / ชั้น แต่ฉันไม่สามารถหาได้ในไดเรกทอรีเสียบของฉัน (สืบค้น "] [" และ "[]" ในไดเรกทอรีที่เสียบของฉันและวิเคราะห์เหตุการณ์ทั้งหมด แต่ไม่พบสิ่งที่กำหนด "] [" หรือ "[]") คุณรู้หรือไม่ว่าปลั๊กอินที่ฉันเคยใช้ คุณรู้หรือไม่ว่าปลั๊กอินใดที่มีฟังก์ชั่นนี้

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

3
ฉันจะใช้เครื่องหมายเพื่อข้ามไปยังตำแหน่งที่ตั้งในไฟล์ที่ฉันเพิ่งเปิด แต่ไม่เปลี่ยนแปลงได้อย่างไร
บ่อยครั้งที่ฉันแก้ไขไฟล์ - คิดว่างานของฉันเสร็จแล้ว - จากนั้นปิดไฟล์และไปยังสิ่งต่อไป แต่แล้วฉันก็รู้ว่าฉันต้องกลับไปที่รหัสนั้นและปรับแต่งมันอีกเล็กน้อย ถ้าผมเปิดไฟล์อีกครั้งฉันสามารถใช้เครื่องหมายและข้ามไปยังตำแหน่งของการแก้ไขครั้งสุดท้ายด้วย. ตอนนี้ฉันกำลังพยายามหาวิธีใช้เครื่องหมายของกลุ่มเพื่อข้ามไปยังตำแหน่งที่ตั้งในไฟล์ที่ฉันเพิ่งเยี่ยมชม แต่ไม่เปลี่ยนแปลง ฉันรู้ว่าฉันสามารถตั้งเครื่องหมายด้วยตนเองได้ แต่ส่วนใหญ่ฉันไม่คาดหวังว่าจะกลับมาอีกดังนั้นฉันจึงไม่ได้ตั้งเครื่องหมายและจำเป็นต้องใช้เครื่องหมายที่เป็นกลุ่มที่สร้างโดยอัตโนมัติ เครื่องหมายดูเหมือนว่านี้อาจจะเป็นวิธีการที่จะบรรลุเป้าหมายนี้ได้จาก '.":h motion " ไปยังตำแหน่งเคอร์เซอร์เมื่อออกจากบัฟเฟอร์ปัจจุบันครั้งล่าสุด เริ่มต้นที่ตัวอักษรตัวแรกของบรรทัดแรก ดู | last-position-jump | สำหรับวิธีใช้สิ่งนี้สำหรับไฟล์ที่เปิดแต่ละไฟล์ มีการจดจำตำแหน่งเพียงหนึ่งตำแหน่งต่อบัฟเฟอร์ไม่ใช่หนึ่งตำแหน่งสำหรับแต่ละหน้าต่าง ตราบใดที่บัฟเฟอร์สามารถมองเห็นได้ในหน้าต่างตำแหน่งจะไม่เปลี่ยนแปลง {ไม่ใช่ใน Vi} อย่างไรก็ตามถ้าฉัน ปิดหน้าต่างทั้งหมดที่แสดงบัฟเฟอร์ (แต่บัฟเฟอร์นั้นยังคงอยู่ในรายการบัฟเฟอร์) หรือ: ฆ่าอินสแตนซ์ทั้งหมดของบัฟเฟอร์ ดูเหมือนว่าเครื่องหมายจะไม่อัปเดตฉันจะใช้เครื่องหมายเพื่อข้ามไปยังตำแหน่งของตำแหน่งเคอร์เซอร์สุดท้ายในบัฟเฟอร์ / ไฟล์ได้อย่างไร


2
ภูมิภาคสี่เหลี่ยมเป็นวัตถุข้อความ?
เป็นไปได้ที่จะกำหนดวัตถุข้อความในกลุ่มที่จะทำหน้าที่ในพื้นที่สี่เหลี่ยม? ตัวอย่างเช่นสมมติว่าฉันมีแนวคอลัมน์แนวตั้งของข้อความเช่นนี้ column 1 co column 2 col lumn 1 colu umn 2 column mn 1 column 2 column 2 c 1 column 1 olumn 2 colu มันจะเป็นไปได้ที่จะกำหนด textobject cสำหรับคอลัมน์เช่นนั้นdacจะลบคอลัมน์yacจะดึงมันcacจะเปลี่ยนหรือไม่? (ฉันรู้เกี่ยวกับ Control-V สำหรับการเลือกพื้นที่สี่เหลี่ยมและฉันรู้ว่าคุณสามารถใช้d, yฯลฯ เพื่อลบ, งัด ฯลฯ ภูมิภาคที่เลือก แต่ฉันอยากรู้เฉพาะเกี่ยวกับสิ่งที่เป็นไปได้โดยใช้วัตถุข้อความ)

3
มีการเคลื่อนไหวคล้ายกับ "ที่ไม่รวมช่องว่างนำ?
ฉันใช้การa"เคลื่อนไหวค่อนข้างบ่อยเป็นกลุ่ม เช่นใช้ca"ในขณะที่ refactoring ชิ้นส่วนของรหัสเพื่อแทนที่อาร์กิวเมนต์ hardcoded ด้วยชื่อตัวแปร ปัญหาของวิธีนี้คือa" มีช่องว่างนำหน้าหากไม่มีช่องว่างต่อท้าย : พื้นที่สีขาวต่อท้ายจะรวมอยู่ด้วยเว้นแต่จะไม่มีไม่มีดังนั้นจึงมีพื้นที่สีขาวนำหน้า ดังนั้นเมื่อฉันแก้ไขการเรียกใช้ฟังก์ชันดังนี้: aFunction(arg1, "toBeReplaced", arg3) #original aFunction(arg1, replacedArg, arg3) #refactored ฉันได้ด้วยตนเองอีกครั้งแทรกพื้นที่ก่อนที่จะreplacedArgเป็นca"ลบมัน มีการเคลื่อนไหวใด ๆ ที่คล้ายกันซึ่งไม่รวมพื้นที่สีขาวนี้หรือมีอะไรอีกบ้างที่ฉันสามารถใช้แทนca"สิ่งนั้นได้ซึ่งช่วยให้ฉันไม่ต้องพิมพ์พื้นที่เพิ่มเติมหรือไม่ หมายเหตุ: cf"ทำสิ่งที่ฉันต้องการตราบเท่าที่สตริงไม่มีเครื่องหมายคำพูดใด ๆ ที่หลบหนี แต่ต้องการให้ฉันมีเคอร์เซอร์ที่จุดเริ่มต้นของสตริง ฉันต้องการบางสิ่งบางอย่างที่ฉันสามารถใช้จากที่ใดก็ได้ภายในสตริงและ?"<Enter>cf"ค่อนข้างอึดอัดที่จะพิมพ์ มันเกี่ยวกับการ<Space>กดแป้นเดียวน้อยกว่าและเกี่ยวกับความจริงที่ว่าบ่อยครั้งที่ฉันมักลืมที่จะรวมพื้นที่ทำให้ฉันต้องกดแป้นพิเศษเพิ่มเติมอย่างน้อยสี่ครั้ง ( bi<Space><Esc>) และหยุดโฟกัสของฉัน ดังนั้นความยาวของคำสั่งการเปลี่ยนจึงไม่สำคัญตราบใดที่มันจะลบเฉพาะข้อความระหว่างตัวอักษรที่กำหนดและจากนั้นเข้าสู่โหมดแทรก

4
การ จำกัด การทำงานให้กับส่วนของรหัส
มีหลายครั้งในชีวิตการทำงานในแต่ละวันของฉันที่ฉันจำเป็นต้องใช้ในฟังก์ชั่นเฉพาะสิ่งต่าง ๆ เช่นการเน้นหรือค้นหาตัวแปร แต่ฉันไม่เคยจัดการเพื่อ จำกัด ขอบเขตของการแก้ไข / การค้นหา มีวิธีในการพูดเลือกคัดสรรค้นหาการอ้างอิงทั้งหมด$colorภายในชุดของวงเล็บปีกกาหรือพับนี้ ฯลฯ หากเป็นไปได้มันจะเหมาะอย่างยิ่งที่นี่เป็นเรื่องธรรมดาที่ค่อนข้างเพื่อที่จะสามารถนำไปใช้กับการแก้ไข / เปลี่ยนข้อความ ตัวอย่างเช่น: $color = "#fff"; function PickColor () { $color = "#bbb"; $newColors = ["#000", "#fbf", $color]; foreach ($newColors as $c) { if ($c == "#fff") { break; } } } $differentColor = $color; รหัสนี้เป็นตัวอย่างที่ค่อนข้างแย่อย่างไรก็ตามถ้าฉันต้องการแทนที่อินสแตนซ์ทั้งหมดของ $ color เราจะทำสิ่งนี้ในบริบทของฟังก์ชัน …

1
เปลี่ยนรูปร่างเคอร์เซอร์ในโหมดรอดำเนินการ
เคอร์เซอร์ของฉันใน Gvim: เคอร์เซอร์ของฉันใน Gvim หลังจากกดd: มีวิธีใดบ้างที่ฉันสามารถเปลี่ยนเคอร์เซอร์ใน terminal Vim เมื่ออยู่ในโหมดผู้ดำเนินการที่ค้างอยู่? มันไม่จำเป็นต้องดูเหมือนภาพหน้าจอเลย สิ่งนี้ทำได้โดยo:hor50-CursorในguicursorGvim มีเพียงสามตัวเลือกที่ฉันเห็นสำหรับ Vim คือ: t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* |termcap-cursor-shape| แต่ไม่มีอะไรเกี่ยวกับโอเปอเรเตอร์โหมดที่รอดำเนินการ ...

2
ทำความเข้าใจกับ“ [[”,“]]”,“ []”,“] [”
ฉันพบว่ามันยากที่จะเข้าใจการเคลื่อนไหวของวัตถุข้อความเหล่านี้: *]]* ]] [count] sections forward or to the next '{' in the first column. When used after an operator, then also stops below a '}' in the first column. |exclusive| Note that |exclusive-linewise| often applies. *][* ][ [count] sections forward or to the next '}' in the first column. …

1
ฉันจะทำให้ความยาวของข้อความเป็นเรื่องง่ายได้อย่างไร
บางครั้งฉันต้องการตรวจสอบความยาวของข้อความตัวอย่างในตัวอย่างนี้: str = 'Hello, world!' if len(str) == 13: print('Hello back to you!') Hello, world!ฉันอยากจะรู้ว่าความยาวของสตริง สิ่งที่ฉันทำตอนนี้คือมีหมายเลขคอลัมน์rulerformatด้วย%cฉันวางเคอร์เซอร์บนอักขระตัวแรกจากนั้นไปที่สุดท้ายและย่อท้ายด้วยตนเอง แม้ว่ามันจะค่อนข้างงุ่มง่าม สิ่งที่ฉันต้องการคือความยาวของการเลือกของฉันในโหมดเสมือนจริงในไม้บรรทัด แต่ไม่มีตัวเลือกสำหรับสิ่งนี้เท่าที่ฉันเห็น สามารถทำได้หรือไม่ หรือด้วยวิธีอื่นที่ง่ายกว่านี้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.