Chuyển văn bản trong chế độ Chèn


321

Trong khi ở Chế độ chèn trong Vim, có cách nào để duyệt văn bản di chuyển một số ký tự tiến và lùi ngoài việc sử dụng các phím mũi tên không?

Nếu tôi nhấn h, j, klkhi ở chế độ Insert, các nhân vật thực tế được in trên màn hình thay vì di chuyển qua văn bản.

Cách tôi đang làm hiện tại là phải dùng đến Ctrl+ [( Esc) và duyệt qua văn bản sau đó; nhưng rõ ràng điều đó không hiệu quả.


Một mẹo nhỏ: cũng hữu ích nếu bạn ánh xạ thoát sang tổ hợp phím gần hơn (nghĩa là imap jk <Esc>) để bạn không phải phá vỡ động lực và vươn tay qua bàn phím để nhấn phím.
tsujin

3
Tôi thích nó ( <ESC>) ánh xạ tới kjthay vì jk; Dijkstra, người bạn của tôi là đáng trách!
Bác sĩ Beco

7
Tôi có jkkj, vì vậy tôi chỉ cần nhấn nó như một nút lớn bằng hai ngón tay và không quan trọng thứ tự tôi trở lại bình thường.
Edu Ruiz

Câu trả lời:


648

Bạn dường như sử dụng sai vim, nhưng điều đó có thể là do không quen thuộc với nó.

Cách đúng nhấn Esc, đi đến nơi bạn muốn thực hiện một chỉnh sửa nhỏ, sửa nó, quay lại và tiếp tục chỉnh sửa. Nó hiệu quả vì Vim có nhiều chuyển động hơn so với nhân vật thông thường tiến / lùi / lên / xuống. Sau khi bạn tìm hiểu thêm về chúng, điều này sẽ xảy ra để có năng suất cao hơn.

Đây là một vài trường hợp sử dụng:

  • Bạn vô tình gõ "vô tình". Không có vấn đề, trình tự EscFfrdAsẽ sửa lỗi và đưa bạn trở lại nơi bạn đang chỉnh sửa. Chuyển Ffđộng sẽ di chuyển con trỏ của bạn ngược về ký tự "f" đầu tiên gặp phải. So sánh với Ctrl+ DeldEnd, hầu như giống nhau trong một trình soạn thảo thông thường, nhưng mất nhiều thao tác bàn phím hơn và khiến bạn di chuyển bàn tay ra khỏi khu vực chữ và số của bàn phím.
  • Bạn đã vô tình gõ "bạn vô tình gõ", nhưng muốn sửa nó thành "bạn cố ý gõ". Sau đó Esc2bcwsẽ xóa từ bạn muốn sửa và đưa bạn đến chế độ chèn, do đó bạn có thể nhập lại từ đó ngay lập tức. Để quay lại chỉnh sửa, chỉ cần nhấn Athay vì End, vì vậy bạn không cần phải di chuyển bàn tay để chạm vào Endphím.
  • Bạn vô tình gõ "chuột" thay vì "chuột". Không có vấn đề - tốt Ctrl+ cũ wsẽ xóa từ trước đó mà không rời khỏi chế độ chèn. Và nó sẽ xảy ra nhanh hơn nhiều để xóa một từ nhỏ hơn là sửa lỗi trong đó. Tôi đã quá quen với việc tôi đã đóng trang trình duyệt khi tôi đang gõ tin nhắn này ...!
  • Số lần lặp lại phần lớn được sử dụng. Trước khi thực hiện một phong trào, bạn có thể gõ một số; và phong trào sẽ được lặp lại số lần này. Ví dụ: 15hsẽ đưa con trỏ của bạn 15 ký tự trở lại và 4j sẽ di chuyển con trỏ của bạn xuống 4 dòng. Bắt đầu sử dụng chúng và bạn sẽ quen với nó sớm thôi. Nếu bạn mắc lỗi mười ký tự trở lại từ con trỏ, bạn sẽ thấy rằng việc bấm phím 10 lần sẽ chậm hơn nhiều so với cách tiếp cận lặp lại để di chuyển con trỏ. Vì vậy, thay vào đó, bạn có thể nhanh chóng nhập các phím 12h(để đoán xem bạn cần di chuyển bao nhiêu ký tự trở lại) và ngay lập tức di chuyển về phía trước hai lần llđể nhanh chóng sửa lỗi.

Nhưng, nếu bạn vẫn muốn thực hiện các thao tác văn bản nhỏ mà không rời khỏi chế độ chèn, hãy làm theo lời khuyên của rson và sử dụng + . Lấy ví dụ đầu tiên mà tôi đã đề cập ở trên, + sẽ chuyển bạn đến một ký tự "f" trước đó và để bạn ở chế độ chèn.CtrlOCtrlOFf


33
+1 Câu trả lời tuyệt vời và cảm ơn về tất cả các ví dụ bạn đã đưa ra!
Andreas Grech

79
Cũng đáng lưu ý rằng bạn có thể sử dụng Ctrl+ođể phát hành một lệnh trong chế độ bình thường. Đôi khi điều này có thể đưa bạn đến nơi bạn muốn, đặc biệt là khi kết hợp với các lệnh chuyển động t / T và f / F.
Randy Morris

6
"Bạn dường như sử dụng sai vim, nhưng có khả năng là bạn không quen thuộc lắm với nó." là một chút hạ mình. Không?
David Rivers

17
Đây là một cái nhìn sâu sắc tuyệt vời về cách sử dụng Vim đúng cách. Tuy nhiên, tôi thấy việc nhấn "Esc" là một nỗi đau, và vì vậy tôi nghĩ rằng đáng để chỉ ra rằng bạn có thể ánh xạ một khóa dễ truy cập hơn đến chức năng đó, ví dụ: "imap jj <esc>".
xứng

25
Để sửa lỗi chính tả, bạn không nên rời khỏi chế độ chèn. Vim mạnh mẽ bởi vì bạn tạo ra các hành động nguyên tử, lặp lại. Chèn một lỗi đánh máy và sửa nó sẽ tạo ra hai hành động riêng biệt. Cách đúng để sửa lỗi chính tả để làm điều đó mà không cần rời khỏi chế độ chèn. Nếu điều đó có nghĩa là sử dụng các phím mũi tên để điều hướng ở đó thì tốt. Vim có một số phím bấm để điều hướng trong chế độ chèn. Kiểm tra :h ins-special-keys. ctrl-h: backspace , ctrl-w: xóa từ , ctrl-u: xóa đến đầu dòng , alt-b: quay lại một từ.
everett1992

152

Trong khi ở chế độ chèn , hãy sử dụng CtrlOđể chuyển sang chế độ bình thường chỉ bằng một lệnh:

CTRL-O h  move cursor left 
CTRL-O l  move cursor right
CTRL-O j  move cursor down
CTRL-O k  move cursor up

đó có lẽ là cách đơn giản nhất để làm những gì bạn muốn và dễ nhớ.

Các phím điều khiển rất hữu ích khác trong chế độ chèn:

CTRL-W    delete word to the left of cursor
CTRL-O D  delete everything to the right of cursor
CTRL-U    delete everything to the left of cursor
CTRL-H    backspace/delete
CTRL-J    insert newline (easier than reaching for the return key)
CTRL-T    indent current line
CTRL-D    un-indent current line

những điều này sẽ loại bỏ nhiều chuyển đổi lãng phí trở lại chế độ bình thường.


13
Cảm ơn bạn. Điều này nên được coi là câu trả lời chính xác. Nó thực sự hữu ích.
Vào

1
Trên máy mac của tôi, đó là chữ thường o không phải chữ hoa O. Có khác với "vim chuẩn" không? Tôi thấy rất nhiều nơi họ xuất hiện để nói chữ hoa (trừ khi đó chỉ là cách viết cẩu thả). Bạn có thể xác nhận?
Floris

Ok rất hữu ích. Tuy nhiên, một sự kết hợp thú vị tôi có một thời gian khó tìm và đây là loại bỏ dòng. Điều rất được đánh giá thấp để làm trong trường hợp vô tình chèn một dòng.
patrik

5
@Floris Vim không phân biệt chữ hoa và chữ thường cho các kết hợp ctrl. Đó là lý do tại sao không thể ánh xạ ctrl + shift + thứ gì đó.
Mahmoud Al-Qudsi

92

Chế độ chèn

Phong trào

hjkl

Mặc dù những gì Pavel Shved đã nói - rằng có lẽ nên làm quen với việc sử dụng Escchế độ Chèn hơn - đây là một ví dụ về ánh xạ để điều hướng nhanh trong chế độ Chèn:

" 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

Điều này sẽ làm cho Alt+ htrong chế độ Chèn đi một ký tự bên trái, Alt+ jxuống và cứ thế, tương tự như hjklở chế độ Bình thường.

Bạn phải sao chép mã đó vào tệp vimrc của mình để tải mã mỗi khi bạn khởi động vim (bạn có thể mở mã đó bằng cách nhập :new $myvimrcbắt đầu ở chế độ Bình thường).


Bất kỳ chuyển động chế độ bình thường

Do Altkhóa sửa đổi không được ánh xạ (theo thứ gì đó quan trọng) theo mặc định, bạn có thể theo cùng một chức năng kéo (hoặc tất cả) khác từ chế độ Bình thường sang chế độ Chèn. Ví dụ:
Di chuyển đến đầu của từ hiện tại với Alt+ b:

inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w


(Các ứng dụng khác Alttrong chế độ Chèn)

Điều đáng nói là có thể sử dụng Altkhóa tốt hơn so với sao chép hành vi Chế độ bình thường: ví dụ: đây là ánh xạ để sao chép từ một dòng liền kề, phần từ cột hiện tại cho đến cuối dòng:

" 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

(Tôi đã sử dụng \ tiếp tục và thụt dòng để tăng độ rõ ràng - các lệnh được diễn giải như thể được viết trên một dòng duy nhất.)


Các phím nóng tích hợp để chỉnh sử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)

(Không có phím nóng tích hợp đáng chú ý nào để di chuyển trong chế độ Chèn.)

Tài liệu tham khảo: :help insert-index


Chế độ dòng lệnh

Tập hợp ánh xạ này làm cho các chuyển độngAlt + trên có sẵn trong Dòng lệnh: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>

Ngoài ra, các ánh xạ này thêm các chuyển động vào chế độ Chèn và chế độ Dòng lệnh trong một lần:

" 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>


Các lệnh ánh xạ để kéo các lệnh chế độ Bình thường sang chế độ Dòng lệnh trông hơi khác so với các lệnh ánh xạ chế độ Chèn (vì chế độ Dòng lệnh thiếu chế độ Chèn 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>'


Các phím nóng tích hợp để di chuyển và chỉnh sửa

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

Tài liệu tham khảo: :help ex-edit-index


@YrifJulum: Cảm ơn! :) Bây giờ tôi đã thêm thông tin về điều chỉnh chế độ Dòng lệnh. (Cách tiếp cận hơi khác so với chế độ Chèn.)
Aaron Thoma

@Zen: Ý của bạn là "winkey" nghĩa là gì? Tôi đã không tham khảo khóa Windows trong câu trả lời của mình. Bạn có nghĩa là Altchìa khóa?
Aaron Thoma

Shift - trái / phải để di chuyển toàn bộ từ !! Làm thế nào tôi không biết điều đó. Cảm ơn bạn.
Floris

thực tế trong chế độ đầu cuối, alt sẽ tự động gửi esc trước các lệnh của bạn ........
Fuseteam

26

Nếu bạn là một người theo chủ nghĩa thuần túy vim, hãy bỏ qua việc đọc câu trả lời này. OTOH, nếu bạn chưa quen với vim và đang tìm kiếm một vài lời khuyên hữu ích mà bạn không tìm thấy trong hàng trăm bài hướng dẫn và blog về vim, hãy đọc trên ... :-)

Một vài cách không chính thống (vim)

Đó là năm 2014, và khi một người gần đây quay trở lại vimtôi có thể đưa ra một vài quan điểm và lời khuyên có khả năng trái ngược.

Sử dụng shift + left hoặc shift + right để duyệt các từ

Mặc dù sự lặp lại là một khái niệm mạnh mẽ trong vim, nhưng cá nhân tôi thấy lạ khi sử dụng nó hoặc buộc tôi phải đếm (dòng, ký tự, từ, v.v.) hoặc đoán. Bộ não của tôi thường hoạt động như "Tôi muốn con trỏ ở đó " chứ không phải "Tôi muốn con trỏ _5_words_to_the_left_". Nhanh chóng có thể di chuyển con trỏ và quan sát trực quan nơi điểm chèn theo cách này cho phép tôi ghi nhớ những gì tôi đang chỉnh sửa thay vì phải đếm xem tôi cần thực hiện bao nhiêu bước để đến nơi tôi cần chỉnh sửa.

Bật chế độ chuột và sử dụng bánh xe chuột và nhấp

... Để điều hướng các văn bản lớn.

Hầu hết (tất cả) máy tính hiện đại đều có bàn di chuột được tích hợp chặt chẽ với bàn phím (ví dụ: MacBook). Các nhà thiết kế công nghiệp đã dành nhiều năm để tối ưu hóa các thiết kế này để vấn đề cũ là phải di chuyển bàn tay ra khỏi bàn phím không còn là vấn đề thực sự. Được rồi, đó là nếu bạn đã quen với chuột và không muốn chuyển đổi, nhưng đối với bất kỳ ai mới sử dụng vim (như những người có thể tìm thấy bài đăng này qua tìm kiếm), thì đây không phải là vấn đề.

Là một phần thưởng, nhấp + kéo đưa bạn vào chế độ trực quan

Khi bật chuột, nhấp và kéo có tác dụng chuyển sang chế độ trực quan và đánh dấu một khu vực để kéo dài.

Và sử dụng bánh xe cuộn

Sử dụng chuột (bánh xe) để cuộn xung quanh và nhấp để định vị con trỏ (duh) chỉ hoạt động. Xem http://usevim.com/2012/05/16/mouse/ để biết thêm về điều này.

Và vì thế...

Đây là những cách tôi gọi hiện đại hơn (sử dụng chuột, bánh xe cuộn, v.v.) để điều hướng trong vim, hiệu quả tương đương tùy thuộc vào sở thích nhập liệu của bạn.

HTH


6
@MilesRout vâng, tôi đã từ chối trách nhiệm. Nhưng trong tất cả sự nghiêm túc, tôi sẽ nghĩ rằng có một tỷ lệ tốt người dùng vim có bộ não hoạt động giống như tôi. Đó là ... bộ não của tôi thường hoạt động như "Tôi muốn con trỏ ở đó" chứ không phải "Tôi muốn con trỏ 5_words_to_the_left ". Và cách thông thường của vim không hoạt động tốt cho những người đó. Tôi yêu vim vì a) nó có sẵn ở mọi nơi và b) có các tính năng mạnh mẽ. Tuy nhiên tôi không cảm thấy cần phải tuân thủ tất cả các cơ chế mặc định của nó.
Shyam Habarakada

4
@MilesRout Có rất nhiều tôn giáo xung quanh loại điều này trong vim, vì vậy tôi sẽ không tranh luận với bạn về điều này. Phương pháp đếm lặp lại không giúp tôi và câu trả lời được chấp nhận cũng gọi nó là một thứ gì đó không được sử dụng nhiều. Tôi chỉ có thể đoán tại sao đó là trường hợp. Sử dụng w, b, vv để điều hướng đến những nơi gần đó đều rất tuyệt, nhưng để đi xa hơn, bánh xe chuột hoạt động tốt hơn rất nhiều đối với tôi. Chúc mừng.
Shyam Habarakada

4
+1. Tôi không hiểu nó bỏ phiếu. Có từ chối trách nhiệm. Mang nó nếu bạn thích nó và bỏ qua nếu bạn không.
fangmobile.com

Đây là một câu trả lời rất hữu ích
Slava

1
Là một người gần đây đã chuyển sang VIM, tôi thấy tiền đề của câu trả lời này là hoàn toàn đúng chỗ. Khả năng cho biết ngay lập tức số lần lặp lại cần thiết để đặt con trỏ vào một vị trí nhất định có thể hoặc không phải là thứ đi kèm kinh nghiệm. Ngay bây giờ, nhiều như @ShyamHabarakada, bộ não của tôi không hoạt động như vậy. Bất kể điều này có thể không chính thống đến mức nào, cá nhân tôi đã ánh xạ lại fn + hjkl vào các phím mũi tên cho các chuyển động rất nhỏ. Đối với các phong trào lớn, tôi thường xấp xỉ một số lần lặp lại và sau đó tinh chỉnh với những chuyển động đó. Đối với tôi, đó là nhanh nhất tôi có thể nhận được.
Jacoscaz

14

Nhiều người trong cộng đồng Vim cho rằng bạn không nên điều hướng trong chế độ Chèn, rằng đó không phải là cách của Vim. Tôi nghĩ rằng đây là một tình cảm không chính xác đã học được khi chuyển từ các biên tập viên tiêu chuẩn sang Vim.

Vim mạnh nhất khi bạn sử dụng các công cụ của nó để tạo ra các hành động nguyên tử, lặp lại hoặc tìm thấy.

Bạn có thể điều hướng trong khi ở chế độ Chèn nếu bạn đang sửa một lỗi bạn đã mắc trong cùng một phiên Chèn. Bạn không nên điều hướng bên ngoài phạm vi văn bản bạn đã sửa đổi.

Nếu bạn mắc lỗi trong khi nhập văn bản và thoát khỏi chế độ Chèn để sửa lỗi, bạn sẽ không thể lặp lại hành động đã định, .sẽ lặp lại sửa.

Vim không hỗ trợ nhiều phím điều hướng chế độ Chèn. Rõ ràng là có các phím mũi tên, Home và End, nhưng cũng có nhiều phím tắt khác. Xem :h ins-special-keys.


4

Trong GVim, bạn có thể sử dụng chuột. Nhưng thành thật mà nói, có gì sai khi sử dụng các phím mũi tên? Có một lý do tại sao họ ở trên bàn phím.


9
nhưng lý do đó không phục vụ cho người dùng vim. Một trong những thế mạnh trung tâm của vim là bạn có thể làm tất cả mọi việc mà không mất thời gian - bỏ tay ra khỏi bàn phím nhà. Đặc biệt, các phong trào hjkl.
Aaron Thoma

1
Tôi đồng ý với @ammoQ. Không có gì sai khi sử dụng các phím mũi tên. Nếu sử dụng các phím mũi tên cho bạn năng suất cao hơn, hãy sử dụng nó.
Bài hát của Eunwoo

accolade: Tôi sử dụng hjkl thường xuyên hơn các phím mũi tên khi sử dụng vi, nhưng chuyển đổi giữa các chế độ đã trở thành một hành động trong tiềm thức đối với tôi.
Erich Kitzmueller

4

Để có một điều hướng tốt hơn một chút trong chế độ chèn, tại sao không ánh xạ một số phím?

imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Home>
" <C-a> is used to repeat last entered text. Override it, if its not needed

Nếu bạn có thể làm việc để làm cho khóa Meta hoạt động trong thiết bị đầu cuối của mình, bạn có thể chế độ chế độ emacs thậm chí còn tốt hơn. Điều hướng trong chế độ bình thường là cách tốt hơn, nhưng đối với các chuyển động ngắn hơn sẽ giúp duy trì ở chế độ chèn.

Đối với các bước nhảy dài hơn, tôi thích bản dịch mặc định sau:

<Meta-b>    maps to     <Esc><C-left>

Điều này chuyển sang chế độ bình thường và quay trở lại một từ


2

Tôi tin HomeEnd(và PageUp/ PageDn) cũng hoạt động bình thường khi ở chế độ chèn, nhưng ngoài ra, tôi không tin có bất kỳ khóa tiêu chuẩn nào khác được xác định để duyệt văn bản.


nhưng có lẽ không có cách nào vượt qua văn bản chỉ bằng các phím chữ?
Andreas Grech

5
Chắc chắn là có, nếu bạn không muốn có thể gõ một số chữ cái nhất định ...;)
hobbs

@hobbs Làm thế nào về ctrl + hjkl? Điều đó có ý nghĩa
user4052054

1

Xin lỗi nhưng vim không làm việc theo cách đó.

Bạn nên chuyển sang chế độ "bình thường", điều hướng và sau đó quay lại để chèn lại.


1

Bạn có thể tạo ánh xạ hoạt động ở chế độ chèn. Cách để làm điều đó là thông qua inoremap. Lưu ý 'i' ở đầu lệnh (noremap rất hữu ích để tránh va chạm bản đồ chính). Hệ quả là chế độ 'bình thường'. Bạn có thể phỏng đoán những gì vim nghĩ là 'bình thường';)

TUY NHIÊN, bạn thực sự muốn điều hướng xung quanh trong văn bản bằng chế độ 'bình thường'. Vim là siêu phẩm ở loại điều này và tất cả sức mạnh đó có sẵn từ chế độ bình thường. Vim đã cung cấp các cách dễ dàng để chuyển từ chế độ bình thường sang chế độ chèn (ví dụ: i, I, a, A, o, O). Bí quyết là làm cho nó dễ dàng vào chế độ bình thường. Cách để làm điều đó là ánh xạ lại lối thoát đến một khóa có độ tin cậy cao hơn. Nhưng bạn cần một thứ không xung đột với cách gõ thông thường của bạn. Tôi sử dụng:

inoremap jj <Esc>

Vì jj (đó là 2 j được gõ lần lượt nhanh chóng) dường như không xuất hiện trong từ vựng của tôi. Người khác sẽ ánh xạ lại nơi thoải mái.

Một thay đổi thiết yếu khác mà tôi thực hiện là chuyển các phím CAPSLOCK và KIỂM SOÁT trên bàn phím của mình (sử dụng cấu hình bàn phím của máy chủ) vì tôi gần như không bao giờ sử dụng CAPSLOCK và nó có nút lớn, đẹp ngay tại nơi tôi muốn. (Điều này là phổ biến đối với người dùng Emacs. Nhược điểm là khi bạn thấy mình trên bàn phím 'không trộn'! Aaarggh!)

Khi bạn ánh xạ lại CAPSLOCK, bạn có thể thoải mái sử dụng các chế độ chèn chế độ chèn sau đây:

Hãy nhớ rằng một số khóa đã được ánh xạ ở chế độ chèn (back-kill-word là Cw (Control-w) theo mặc định, bạn có thể đã có các ràng buộc bạn muốn. Điều đó nói rằng, tôi thích Ch vì vậy trong .vimrc của tôi :

inoremap <C-h> <C-w>

NHƯNG, bạn có thể muốn co thắt bộ nhớ cơ tương tự ở chế độ bình thường, vì vậy tôi cũng ánh xạ Ch là:

nnoremap <C-h> db

(d) elete (b) ackwards hoàn thành điều tương tự với cùng một hợp âm chính. Loại chỉnh sửa nhanh này là một loại mà tôi thấy hữu ích trong thực tế cho lỗi chính tả. Nhưng dính vào chế độ bình thường để di chuyển xung quanh trong văn bản và bất cứ điều gì hơn là giết từ trước đó. Một khi bạn có thói quen thay đổi chế độ (dĩ nhiên là sử dụng bản tóm tắt lại), nó sẽ hiệu quả hơn nhiều so với chế độ chèn lại.


bản tóm tắt hay cho việc trốn thoát - Tôi nghĩ nó sẽ hoạt động với mọi thứ trừ tiếng Ả Rập phiên âm!
jjt

0

Bạn có thể sử dụng imapđể ánh xạ bất kỳ phím nào trong chế độ chèn vào một trong các phím con trỏ. Thích như vậy:

imap h <Left>

Bây giờ h hoạt động như trong chế độ bình thường, di chuyển con trỏ. (Ánh xạ h theo cách này rõ ràng là một lựa chọn tồi)

Phải nói rằng tôi không nghĩ rằng cách di chuyển tiêu chuẩn trong văn bản bằng VIM là "không hiệu quả". Có rất nhiều cách rất mạnh để duyệt văn bản ở chế độ bình thường (như sử dụng w và b, hoặc / và ?, Hoặc f và F, v.v.)


1
Tôi đã không nói rằng cách tiêu chuẩn để di chuyển qua văn bản trong vim là không hiệu quả; Điều tôi đã nói là hơi "khó chịu" khi phải thoát khỏi chế độ chèn để quay lại một vài ký tự và sau đó phải quay lại để chèn lại; nhưng một lần nữa, có lẽ điều này là do tôi chưa quen với vim này :)
Andreas Grech

Đây là giải pháp tôi đang tìm kiếm. Tôi sử dụng imap <Ch> <Left> (tôi biết nó sẽ xóa một char, nhưng tôi có backspace), đó là tất cả những gì tôi cần, cảm ơn.
dùng4052054

0

Đối với một số chuyển động và hành động thường xuyên sử dụng, tôi đã xác định các ánh xạ sau. Điều này giúp tiết kiệm tổ hợp phím so với tổ hợp CTRL + O và vì tôi cần chúng thường xuyên, nên họ sẽ trả hết tiền trong thời gian dài.

inoremap <A-$> <C-o>$
inoremap <A-^> <C-o>^
inoremap <A-h> <Left>
inoremap <A-l> <Right>
inoremap <A-O> <C-O>O
inoremap <A-o> <C-o>o
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.