โหมดแทรก
การเคลื่อนไหว
hjkl
แม้จะมีสิ่งที่ Pavel Shved กล่าวไว้ว่าควรใช้ความคุ้นเคยกับEscaping โหมดแทรก - นี่เป็นตัวอย่างของการแม็พสำหรับการนำทางอย่างรวดเร็วภายในโหมดแทรก:
" provide hjkl movements in Insert mode via the <Alt> modifier key
inoremap <A-h> <C-o>h
inoremap <A-j> <C-o>j
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l
สิ่งนี้จะทำให้Alt+ hในโหมดแทรกไปทางซ้ายอักขระหนึ่งตัวAlt+ jลงไปhjklเรื่อย ๆ ตามลำดับในโหมดปกติ
คุณต้องคัดลอกรหัสนั้นลงในไฟล์ vimrc ของคุณเพื่อโหลดมันทุกครั้งที่คุณเริ่มใช้ vim (คุณสามารถเปิดได้โดยพิมพ์การ:new $myvimrc
เริ่มต้นในโหมดปกติ)
การเคลื่อนไหวในโหมดปกติใด ๆ
เนื่องจากAltคีย์ตัวดัดแปลงไม่ได้ถูกแมป (เป็นสิ่งที่สำคัญ) โดยค่าเริ่มต้นคุณสามารถดึงฟังก์ชันการทำงานอื่น ๆ (หรือทั้งหมด) แบบเดียวกันจากโหมดปกติไปยังโหมดแทรก เช่น
การย้ายไปยังจุดเริ่มต้นของคำปัจจุบันด้วยAlt+ b:
inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w
(การใช้งานอื่น ๆ ของAltในโหมดแทรก)
เป็นสิ่งที่ควรค่าแก่การกล่าวถึงว่าอาจใช้Altคีย์ได้ดีกว่าการทำซ้ำโหมดพฤติกรรมปกติ: เช่นนี่คือการจับคู่สำหรับการคัดลอกจากบรรทัดที่อยู่ติดกันส่วนจากคอลัมน์ปัจจุบันจนถึงจุดสิ้นสุดของบรรทัด:
" Insert the rest of the line below the cursor.
" Mnemonic: Elevate characters from below line
inoremap <A-e>
\<Esc>
\jl
\y$
\hk
\p
\a
" Insert the rest of the line above the cursor.
" Mnemonic: Y depicts a funnel, through which the above line's characters pour onto the current line.
inoremap <A-y>
\<Esc>
\kl
\y$
\hj
\p
\a
(ฉันใช้การ\
ต่อเนื่องบรรทัดและการเยื้องเพื่อเพิ่มความชัดเจน - คำสั่งถูกตีความราวกับว่าเขียนในบรรทัดเดียว)
ปุ่มลัดในตัวสำหรับการแก้ไข
CTRL-H delete the character in front of the cursor (same as <Backspace>)
CTRL-W delete the word in front of the cursor
CTRL-U delete all characters in front of the cursor (influenced by the 'backspace' option)
(ไม่มีปุ่มลัดในตัวที่โดดเด่นสำหรับการเคลื่อนไหวในโหมดแทรก)
อ้างอิง: :help insert-index
โหมดบรรทัดคำสั่ง
ชุดของการแมปนี้ทำให้มีการเคลื่อนไหวAlt + ด้านบนในบรรทัดคำสั่ง:hjkl
" provide hjkl movements in Command-line mode via the <Alt> modifier key
cnoremap <A-h> <Left>
cnoremap <A-j> <Down>
cnoremap <A-k> <Up>
cnoremap <A-l> <Right>
หรือมิฉะนั้นการแมปเหล่านี้จะเพิ่มการเคลื่อนไหวทั้งในโหมดแทรกและโหมดบรรทัดคำสั่งในคราวเดียว:
" provide hjkl movements in Insert mode and Command-line mode via the <Alt> modifier key
noremap! <A-h> <Left>
noremap! <A-j> <Down>
noremap! <A-k> <Up>
noremap! <A-l> <Right>
คำสั่งการแมปสำหรับการดึงคำสั่งโหมดปกติไปยังโหมดบรรทัดคำสั่งดูแตกต่างจากคำสั่งการแมปโหมดแทรก (เนื่องจากโหมดบรรทัดคำสั่งขาดโหมดแทรกCtrl+ O):
" Normal mode command(s) go… --v <-- here
cnoremap <expr> <A-h> &cedit. 'h' .'<C-c>'
cnoremap <expr> <A-j> &cedit. 'j' .'<C-c>'
cnoremap <expr> <A-k> &cedit. 'k' .'<C-c>'
cnoremap <expr> <A-l> &cedit. 'l' .'<C-c>'
cnoremap <expr> <A-b> &cedit. 'b' .'<C-c>'
cnoremap <expr> <A-w> &cedit. 'w' .'<C-c>'
ปุ่มลัดในตัวสำหรับการเคลื่อนไหวและการแก้ไข
CTRL-B cursor to beginning of command-line
CTRL-E cursor to end of command-line
CTRL-F opens the command-line window (unless a different key is specified in 'cedit')
CTRL-H delete the character in front of the cursor (same as <Backspace>)
CTRL-W delete the word in front of the cursor
CTRL-U delete all characters in front of the cursor
CTRL-P recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N recall next command-line from history (that matches pattern in front of the cursor)
<Up> recall previous command-line from history (that matches pattern in front of the cursor)
<Down> recall next command-line from history (that matches pattern in front of the cursor)
<S-Up> recall previous command-line from history
<S-Down> recall next command-line from history
<PageUp> recall previous command-line from history
<PageDown> recall next command-line from history
<S-Left> cursor one word left
<C-Left> cursor one word left
<S-Right> cursor one word right
<C-Right> cursor one word right
<LeftMouse> cursor at mouse click
อ้างอิง: :help ex-edit-index
imap jk <Esc>
) เพื่อที่คุณจะได้ไม่ต้องเสียโมเมนตัมของคุณและเข้าถึงแป้นพิมพ์ของคุณเพื่อกดปุ่ม