ใช้ backspace เพื่อแก้ไขคำสั่งปัจจุบันในโหมดปกติหรือไม่


9

บางครั้งเมื่อป้อนคำสั่งในโหมดปกติคุณอาจพิมพ์ผิดเช่นถ้าฉันตั้งใจจะพิมพ์ผมตั้งใจจะเริ่มพิมพ์10dk19d

เนื่องจากคำสั่งยังไม่เสร็จสมบูรณ์ / ถูกกำหนดจึงเป็นไปได้หรือไม่ที่จะลบคีย์ที่ไม่ถูกต้องโดยใช้ backspace เช่น: 19d<backspace><backspace>0dkแทนที่จะต้องกดปุ่ม Escape แล้วลองคำสั่งอีกครั้ง?

คำถามด้านข้าง: มีคำว่า Vim สำหรับโครงสร้างข้อมูลที่เก็บคำสั่งปัจจุบันก่อนที่จะคอมมิต


1
อาจเป็นไปได้ว่าคำถามนี้อาจเป็นคุณลักษณะในเวอร์ชันที่ใหม่กว่า!
SibiCoder

3
ที่เกี่ยวข้อง: vi.stackexchange.com/questions/570/…
SibiCoder

4
AFAIK เป็นไปไม่ได้ - แต่เนื่องจากลำดับเหล่านี้สั้นฉันไม่แน่ใจว่าคุณลักษณะดังกล่าวจะได้รับประโยชน์อะไรบ้าง เมื่อคุณต้องลองใหม่ทั้งลำดับอย่างน้อยคุณจะถูก "บังคับ" ให้ทำซ้ำจนกว่าคุณจะไม่ทำผิดพลาดดังกล่าว;) (เช่น - การสร้างตัวละครซ้ำ!
VanLaser

1
@VanLaser ฝันร้ายที่เลวร้ายที่สุดของ Vimmer คือ "ถูกบังคับ" ให้ทำอะไรบางอย่างซ้ำอีก;) นอกจากนี้ฉันยังดูดการพิมพ์และมีแป้นพิมพ์เปล่าดังนั้นมันจึงไม่ใช่เรื่องแปลกสำหรับฉันที่จะทำตามคำสั่ง 256 ครั้งก่อนจะทำให้ถูกต้อง
HellaMad

4
มีอะไรผิดพลาดเมื่อนักพิมพ์ดีดใช้แป้นพิมพ์เปล่า?
romainl

คำตอบ:


3

ไม่มีทางที่จะทำมันไม่มีและมันเป็นเรื่องปกติที่มีอยู่ไม่: คำสั่งโหมดปกติโดยทั่วไปมักจะสั้นสวยและสามารถยกเลิกได้ด้วยEscถ้าคุณระเบียบ

การแก้ปัญหาที่เป็นไปได้ที่จะใช้:normalคำสั่ง มันทำให้กระบวนการยาวขึ้น แต่ตัวอย่างเช่นถ้าคุณพิมพ์:normal 10jในบรรทัดคำสั่ง Vim จะดำเนินการ10jราวกับว่าคุณพิมพ์ในโหมดปกติ (ดู:h :normal)

คุณสามารถเพิ่มบรรทัดเหล่านี้ใน.vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

พวกเขาสร้างแผนที่ (ที่นี่F4แต่การใช้สิ่งที่คุณต้องการ) NormalModeCommand()ซึ่งจะเรียกใช้ฟังก์ชัน

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

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