ใน Vim (7.2) จะมีคำสั่งโหมดปกติr
เพื่อแทนที่อักขระเดียวด้วยอักขระอื่น ตัวอย่างเช่นการพิมพ์rX
จะแทนที่อักขระหนึ่งตัวภายใต้เคอร์เซอร์ด้วยX
จากนั้นให้คุณกลับสู่โหมดปกติ
มีคำสั่งโหมดปกติเพื่อแทรกอักขระเดียวแล้วกลับสู่โหมดปกติหรือไม่?
ใน Vim (7.2) จะมีคำสั่งโหมดปกติr
เพื่อแทนที่อักขระเดียวด้วยอักขระอื่น ตัวอย่างเช่นการพิมพ์rX
จะแทนที่อักขระหนึ่งตัวภายใต้เคอร์เซอร์ด้วยX
จากนั้นให้คุณกลับสู่โหมดปกติ
มีคำสั่งโหมดปกติเพื่อแทรกอักขระเดียวแล้วกลับสู่โหมดปกติหรือไม่?
คำตอบ:
MelBurslan นั้นถูกต้องว่าคุณสมบัตินี้ไม่มีอยู่จริง แต่การสร้างคำสั่งที่ผู้ใช้กำหนดเองไม่ใช่วิธีการสร้างอย่างแท้จริง ฉัน tinkered ไม่กี่นาทีและมากับสิ่งนี้:
:nmap <silent> ,s "=nr2char(getchar())<cr>P
ซึ่งใช้กลอุบายของ Vim ที่เกี่ยวข้องกับการ "ใส่" ข้อความจากการลงทะเบียนในกรณีนี้การลงทะเบียน "expression" นิพจน์ที่ถูกเสียบเข้ากับรีจิสเตอร์คือ " nr2char(getchar())
" ซึ่งจะส่งคืนสตริงอักขระเดี่ยว
เหตุผลที่ฉันสร้างการแม็พด้วยวิธีนี้คือการให้ผู้ใช้ป้อน "ตรงกลางผ่าน" การทำแผนที่นั้นยุ่งยากและสามารถทำงานได้อย่างไม่คาดคิด แม้การทำแผนที่นี้จะเลื่อนเคอร์เซอร์ลงไปที่พื้นที่แสดงสถานะในขณะที่รอให้ผู้ใช้พิมพ์อักขระ
ขอขอบคุณจอห์นนี่ที่ให้คำตอบที่ยอดเยี่ยมแก่เราในความคิดเห็นด้านล่าง:
":nmap <C-i> i_<Esc>r"
แมป Control + i เพื่อแทรกอักขระเดียวและมันกระชับมาก
ในไฟล์ vimrc ของคุณสิ่งนี้จะมีลักษณะดังนี้:
nnoremap <C-i> i_<Esc>r
ฉันเปลี่ยนการจับคู่ของฉันเพื่อใช้พื้นที่และคุณสามารถเปลี่ยนเป็นคีย์ที่คุณต้องการได้:
nnoremap <Space> i_<Esc>r
เท่าที่ฉันรู้ไม่มีฟังก์ชั่นดังกล่าวในการกระจายตัวที่กว้างขวางของตัวแก้ไข vi แต่ vim มีเครื่องมืออำนวยความสะดวกในการสร้างคำสั่งที่กำหนดเอง ก่อนหน้านี้มีการพูดถึงที่นี่: ในหัวข้อนี้
คุณอาจจะสามารถสร้างคำสั่งที่กำหนดเองของคุณทำสิ่งที่คุณต้องการจะทำ
วิธีง่ายๆในการทำเช่นนี้คือการใช้คำสั่งCut xand Put pบอกว่า*
เป็นตัวละครที่คุณต้องการแทรก i * Escใส่ได้โดยใช้ xจากนั้นกด ที่จะตัดตัวละคร ตอนนี้คุณสามารถกดpเพื่อใส่อักขระเดี่ยวได้ หากคุณต้องการที่จะแทรกตัวละคร 300 300p
ครั้งคุณสามารถพิมพ์: