ฉันจะสลับระหว่างโหมดคำสั่งและโหมดแทรกใน Vim ได้อย่างไร


88

ฉันเพิ่งเริ่มใช้ Vim เป็น IDE ตอนนี้ฉันใช้มันเป็นตัวแก้ไขการทดสอบดังนั้นฉันจึงไม่ต้องไปที่โหมดคำสั่งบ่อยนัก แต่เนื่องจากฉันเขียนโปรแกรมใน Java ฉันต้องไปที่โหมดคำสั่งเพื่อสร้างไฟล์รวบรวม / เรียกใช้ ... ฯลฯ

ปัญหาคือ: ฉันต้องการวิธีที่ดีในการสลับระหว่างสองโหมดนี้

ฉันดูออนไลน์แล้วมันบอกว่า<Esc>คีย์ควรจะทำอย่างนั้น แต่มันไม่ได้ผลสำหรับฉัน (อาจไม่ใช่สำหรับ gVim ฉันไม่รู้ว่าทำไม)

ฉันต้องกดCTRLOทุกครั้งเพื่อไปที่โหมดคำสั่ง; ปุ่ม Escape ทำงานจากโหมดนั้น ... มันนำฉันกลับไปที่โหมดแทรก แต่มีวิธีที่ดีกว่าหรือง่ายกว่าในการสลับระหว่างโหมดคำสั่งและโหมดแทรก?


2
Esc เป็นกุญแจสำคัญในการแทรก การแทรกสามารถเริ่มต้นได้หลายวิธี ตัวพิมพ์เล็ก i เพื่อเริ่มแทรกที่เคอร์เซอร์ของคุณตัวพิมพ์ใหญ่ I เพื่อเริ่มแทรกที่จุดเริ่มต้นของบรรทัด ฯลฯ
Vaughn Cato

เริ่มจากไฟล์ว่างอักขระต่อไปนี้ควรให้ไฟล์ที่มีคำว่า "สวัสดี" อยู่ในไฟล์: ihello<ESC>:w hello.txt<ENTER>
Vaughn Cato

8
ctrl-[ทำงานแทน Esc บนคีย์บอร์ดหลายตัว
Vaughn Cato

คำตอบ:


52

ดูเหมือนว่าเป็นกลุ่มของคุณจะถูกเปิดตัวในโหมดง่าย ดู:help easy.

สิ่งนี้จะเกิดขึ้นเมื่อ Vim ถูกเรียกด้วย-yอาร์กิวเมนต์หรือ as evimหรือบางทีคุณอาจมี:set insertmodeบางส่วนใน.vimrcการกำหนดค่าของคุณ ค้นหาแหล่งที่มาและปิดใช้งาน ชั่วคราวนี้สามารถทำได้นอกจากนี้ยังผ่าน+CtrlO :set noim Enter


ฉันคิดว่ามันเป็น ฉันเปิดใช้งานโหมดแทรกในไฟล์ของฉัน หลังจากที่ฉันลบออกแล้วปุ่ม Escape จะทำงานได้อย่างสมบูรณ์ ขอบคุณ!
Ravish Chawla

8
นี่คือโหมดง่าย!?
Stachu

5
เป็นกลุ่มโหมดง่ายตอนนี้เป็น oxymoron เป็นไปได้ไหมที่จะออกจากกลุ่ม?
Davos

1
@Davos เป็นโหมดที่เริ่มต้นในโหมดแทรกดังนั้นจึงเป็นโหมดที่ไม่สามารถออกจากกลุ่มได้: p "โหมดปกติ" นั้นง่ายกว่าเพียง alt +:, x XD
Fuseteam

115

การกดESCออกจากโหมดแทรกเป็นโหมดปกติซึ่งคุณสามารถกด:เพื่อพิมพ์คำสั่ง กดiอีกครั้งเพื่อกลับไปที่โหมดแทรกเท่านี้คุณก็พร้อมแล้ว

ฉันไม่ใช่กูรู Vim ดังนั้นคนอื่นจะมีประสบการณ์มากกว่าและให้ทางเลือกอื่นแก่คุณ


3
สำหรับพวกเราส่วนใหญ่ แต่คำตอบที่ได้รับการยอมรับมีคำตอบสำหรับปัญหาที่เฉพาะเจาะจง
Saul Axel Martinez Ortiz

21

สิ่งนี้ได้รับการกล่าวถึงในคำถามอื่น ๆแต่ctrl + [เทียบเท่าESCกับแป้นพิมพ์ทั้งหมด


ฉันไม่เคยรู้มาก่อนว่ามีประโยชน์เมื่อไม่รองรับ
ปุ่ม Escape

ว้าวขอบคุณสำหรับข้อมูล! Tmux คัดลอกลำดับการกดแป้นพิมพ์ตอนนี้มีความหมายมากขึ้น
Thomas Legris

4

การใช้ jj

ในกรณีของฉันการตั้งค่า. vimrc (หรือใน gVim อยู่ใน_vimrc) ด้านล่าง

inoremap jj <Esc>   """ jj key is <Esc> setting

นี่คือการรีแมปทั่วไป ฉันพบว่ามีความล่าช้าเล็กน้อยเนื่องจากรอการป้อนอักขระเพิ่มเติม หรืออีกวิธีหนึ่งคือทำการแมปคีย์ capslock ของคุณใหม่เพื่อ esc โดยใช้บางอย่างเช่น KeyRemap4MacBook บน Macbook: github.com/tekezo/KeyRemap4MacBook
Koobz

ฉันพบว่าการรีแมปแท็บเป็น esc นั้นง่ายกว่า: 3
Fuseteam

3

มาจาก emacs ฉันพบว่าฉันชอบctrl +คีย์ในการทำสิ่งต่างๆและในกลุ่มฉันพบว่าทั้งสองอย่าง[ctrl + C]และ[alt + backspace]จะเข้าสู่โหมดปกติจากโหมดแทรก คุณอาจลองดูว่าสิ่งเหล่านี้เหมาะกับคุณหรือไม่


2

สำหรับผมปัญหาคือการที่ผมอยู่ในโหมดการบันทึก qหากต้องการออกจากโหมดการบันทึกกด แล้วEscทำงานตามที่ฉันคาดไว้


0

นอกจากนี้ยังมีวิธีแก้ปัญหาอีกวิธีหนึ่งสำหรับปัญหาประเภทนั้นซึ่งค่อนข้างหายากฉันคิดว่าและคุณอาจประสบกับปัญหานี้หากคุณใช้ vim บน OS X Sierra จริงๆแล้วมันมีปัญหากับปุ่ม Esc ไม่ใช่เป็นกลุ่ม ตัวอย่างเช่นฉันไม่สามารถออกจากวิดีโอแบบเต็มหน้าจอบน youtube โดยใช้ Esc ได้ แต่ฉันอยู่กับสิ่งนั้นเป็นเวลาสองสามเดือนจนกระทั่งฉันประสบปัญหาเดียวกันกับกลุ่ม

ผมพบว่านี้วิธีการแก้ปัญหา หากคุณขี้เกียจมากพอที่จะติดตามลิงก์ภายนอกการปิด Siri และการฆ่ากระบวนการในการตรวจสอบกิจกรรมจะช่วยได้


0

คุณสามารถใช้ Alt + H, J, K, L เพื่อเลื่อนเคอร์เซอร์ในโหมดแทรก


1
ไม่คุณทำไม่ได้ นั่นอาจเป็นการรีแมปการกำหนดค่าของคุณ
Saul Axel Martinez Ortiz

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