Tại sao các phím mũi tên không được khuyến nghị trong Vim


125

"Không bao giờ sử dụng các phím mũi tên trong Vim!"

Tôi đã nghe điều này từ một người nói ngẫu nhiên, nhưng không có cơ hội để hỏi anh ta tại sao. Ngoài ra, nếu bạn không sử dụng các phím mũi tên, làm thế nào bạn có thể di chuyển con trỏ trong chế độ Chèn ?


6
Các câu trả lời lịch sử cho câu hỏi này là thú vị. Các diatribes tôn giáo ít như vậy.
Isaac Rabinovitch

5
Câu hỏi hay. Điều này luôn làm tôi bực mình về vi [m], vì là người dùng bàn phím Dvorak, nó thực sự rất tệ!
wim

32
Tôi nhớ khi lần đầu tiên sử dụng vi, nhiều năm trước, một đồng nghiệp cấp cao khuyên tôi "Hãy chắc chắn rằng bạn học cách sử dụng các phím h, j, k và l vì một ngày nào đó bạn sẽ kết thúc máy tại một trang web của khách hàng nơi mũi tên các phím không hoạt động và bạn sẽ trông giống như một đầu hoàn chỉnh nếu bạn thậm chí không thể làm việc vi. "
Ergwun

1
Trong chế độ chèn, bạn vẫn có thể di chuyển con trỏ bằng Ctrl-O sau đó là lệnh chế độ bình thường và nó sẽ quay trở lại chế độ chèn. Đồng thời kiểm tra CTRL-G CTRL-J và CTRL-G CTRL-K sẽ di chuyển con trỏ đến dòng tiếp theo và trước đó, tại cột bạn bắt đầu chèn.
Benoit

1
Tôi đã phát triển vô số thói quen vi [m] xấu trong những năm qua. Tôi nghĩ rằng tôi cần sử dụng nó qua một kết nối rất chậm, để buộc tôi sử dụng những thói quen tốt hơn.
Aidan

Câu trả lời:


172

Sử dụng các phím mũi tên được coi là một thói quen xấu, bởi vì nếu bạn đang sử dụng các phím mũi tên, có lẽ bạn đang bỏ lỡ nhiều tính năng đáng yêu của vim.

Khi mọi người lần đầu tiên bắt đầu sử dụng vim, họ có xu hướng ở trong chế độ chèn vì điều này giống như chỉnh sửa văn bản thông thường. Tuy nhiên, để có hiệu quả trong vim, bạn chỉ nên ở chế độ chèn khi bạn thực sự nhập văn bản. Nếu bạn muốn di chuyển con trỏ xung quanh, bạn nên ở chế độ bình thường. Bạn nên mặc định ở chế độ bình thường.

Trong chế độ bình thường, có một triệu phím tắt để di chuyển xung quanh. Bạn có thể sử dụng hjklđể di chuyển xung quanh một không gian tại một thời điểm, hoặc bạn có thể di chuyển bằng lời nói, đoạn văn và vân vân. Nếu bạn đang ở chế độ bình thường, sẽ không có điểm nào trong việc sử dụng các phím mũi tên thay hjklvì chúng ở xa hơn.

Có thái độ rằng nếu bạn đang sử dụng các phím mũi tên, bạn đang sử dụng vim "sai". Sự thật là vim có một đường cong học tập thực sự rất dốc, vì vậy trong khi bạn học làm bất cứ điều gì khiến bạn tỉnh táo. Khi tôi mới bắt đầu sử dụng vim, tôi đã làm mọi thứ theo cách "sai" và tôi không gặp vấn đề gì khi phá vỡ thói quen một khi tôi đã học được nhiều hơn các lệnh của vim.

Ví dụ, khi tôi mới bắt đầu, hãy nói rằng tôi muốn thay đổi văn bản trong dấu ngoặc kép:

String mystring = "I want to change this";

Tôi sẽ chuyển sang chế độ chèn, di chuyển đến cuối chuỗi bằng các phím mũi tên, nhấn backspace cho đến khi hết chuỗi và nhập văn bản mới.

Một cách tốt hơn nhiều là đặt con trỏ của bạn ở bất cứ đâu trong chuỗi (chế độ bình thường), sau đó nhấn ci". Điều này sẽ change in ". Nó sẽ xóa mọi thứ giữa các trích dẫn và đưa bạn vào chế độ chèn để tôi có thể nhập văn bản mới.


4
@ ott-- ci<và cũng ci)hoạt động, và bạn không phải di chuyển bàn tay từ bàn phím sang chuột. Nếu bạn muốn điều hướng đến điểm bắt đầu của dấu ngoặc và sau đó thay đổi nội dung f(ci(hoạt động.
Matthew Finlay

6
"Đặt con trỏ của bạn ở bất cứ đâu trong chuỗi" - và một lần nữa, trong khi ở chế độ chèn, bạn sử dụng các mũi tên để đến đó, ở chế độ bình thường bạn có thể làm /wantvà nhấn enter để tiếp cận từ 'muốn', sau đó làm ci".
Nathan Long

8
Này đây là gọn gàng! Thật là một cách nhanh chóng để di chuyển con trỏ xung quanh. Cách duy nhất để cải thiện nó sẽ là một cách nào đó để chỉ ra một cách kỳ diệu nơi bạn muốn con trỏ và chỉ cần nhảy đến đó. Có lẽ chúng ta có thể phát minh ra một cái gì đó. Tôi nghĩ chúng ta nên gọi nó là "chuột".
Matthew Scouten

18
@MatthewScouten Không ai cho rằng vim đơn giản hơn chuột. Với một chút luyện tập, nó nhanh hơn nhiều. Sử dụng chuột giống như chỉ và lẩm bẩm để có được điểm của bạn. Vim cho phép bạn nói trong câu đầy đủ.
Trưởng khoa

4
Phá vỡ thói quen là một câu trả lời tốt - nhưng buộc không cho ai đó hoạt động bình thường là phát xít. Tồi tệ hơn, tính khả dụng của ( hjkl): ánh xạ updown2 khóa không thể phân biệt theo chiều dọc với nhau, chứ đừng nói đến các phím trái và phải ..... đó là một minh chứng bi thảm về sự kiêu ngạo mù quáng về ý thức hệ.
New Alexandria

93

Vị trí quan trọng

Nói tóm lại, Vimsử dụng các hjklphím làm giao diện điều hướng là bởi vì nó là phần còn lại của thiết bị đầu cuối "ADM-3A" cũ, có các phím này được đánh dấu bằng mũi tên.

Bàn phím

vimcó nguồn gốc từ vi, nó sử dụng các khóa hjkl tương tự.

Thói quen mới

Thay thế dựa trên chữ cái cho các phím mũi tên cho phép bạn điều hướng văn bản mà không cần rời tay khỏi cấu hình gõ tiêu chuẩn . Điều này được cho là hiệu quả và nhanh hơn so với việc di chuyển bàn tay của bạn để nhấn các phím mũi tên. Như được nêu trong tài liệu tham khảo # 2 (xem tài nguyên), đây không phải là điểm cuối của những lợi thế này: VIM có rất nhiều phím tắt khác mà bạn có thể truy cập mà không cần di chuyển tay.

Tài nguyên và chế độ chèn

Có một vài câu trả lời rất chi tiết và chính xác cho 2 phần câu hỏi của bạn: về mặt thay thế phím mũi tên, tôi đã trả lời một cách nhanh chóng và tóm tắt, tuy nhiên đối với câu hỏi chèn của bạn , vui lòng xem các tài nguyên được liệt kê bên dưới.


2
Chưa kể rằng các phím hjkl hiệu quả hơn nhiều so với việc di chuyển bàn tay của bạn sang các phím mũi tên.
Sixty feetersdude

2
Điều này không trả lời câu hỏi, chỉ giải thích tại sao hjkl được chọn.
Matsemann

3
Đây là lịch sử đúng và thú vị, nhưng OP hỏi cách bạn di chuyển con trỏ trong chế độ chèn . hjklkhông hoạt động ở chế độ chèn, vậy đây là câu trả lời cho câu hỏi như thế nào?
LarsH

3
@Kruug, phần đầu tiên của câu hỏi là tại sao ai đó nói không bao giờ sử dụng các phím mũi tên trong vim. Việc bạn có thể sử dụng hjkltrong vim không cho biết lý do tại sao một người nào đó không bao giờ nên sử dụng phím mũi tên, giống như việc tôi có thể đi xe đạp đi làm không giải thích được tại sao ai đó sẽ bảo tôi không bao giờ chạy bộ.
LarsH

1
Bây giờ tôi đã hiểu tại sao Vim sử dụng lối thoát để thoát chế độ chèn ^^ Hình ảnh tuyệt vời!
Étienne

56

Câu thần chú ngu ngốc đó thường được lặp đi lặp lại bởi những người đánh máy cảm ứng mà hàng chủ nhà giống như một cột sống thứ hai hoặc bởi người đánh máy không cảm ứng muốn nhìn ngầu. Đối với những người không đánh máy, hàng chủ đơn giản là không đặc biệt và hơi di chuyển tay phải để chạm tới mũi tên không phải là vấn đề gì cả.

Điều quan trọng cần xem xét là những gì mà những người lặp lại câu thần chú đó đề xuất sử dụng thay thế.

Hầu hết thời gian, họ nhấn mạnh vào việc sử dụng hjkl.

Nếu chúng ta bỏ qua thực tế là các phím này chỉ được sử dụng vì bàn phím được sử dụng bởi tác giả của vi không có phím mũi tên vật lý và do đó, bất kỳ đối số nào đối với các phím mũi tên chỉ là hợp lý hóa, hjkldù sao cũng chỉ tốt hơn so với mũi tên. Có, lợi ích duy nhất của việc sử dụng hjklcác mũi tên là bạn bỏ qua chuyển động nhỏ của bàn tay phải đến và từ mũi tên. Cho dù lợi ích đó là giá trị rắc rối là cuộc gọi của bạn.

Nhưng chuyển động của bàn tay phải không phải là lý do tại sao chỉ sử dụng các mũi tên là không hiệu quả. Nó không hiệu quả vì chúng hạn chế bạn di chuyển từng ký tự và từng dòng trong khi hầu hết các chuyển động cần thiết để chỉnh sửa văn bản có phạm vi lớn hơn nhiều.

Đóng mũi tên phải 13 lần là không hiệu quả và nhàm chán. Là nó đó tốt hơn để nhấn lquan trọng 13 lần? Không. Nó cũng ngu ngốc không kém.

Giữ mũi tên phải cho đến khi bạn đạt được mục tiêu sẽ ít nhàm chán hơn nhưng nó dễ bị lỗi và gần như không hiệu quả bằng 13 lần truy cập vì sự chậm lại cần thiết và không xác định ở cuối. Là nó đó tốt hơn để giữ lchìa khóa ép? Tất nhiên là không rồi.

Rất may, hầu hết các bộ công cụ GUI cung cấp các combo như thế Ctrl+Rightcho phép chúng tôi di chuyển từng chữ hoặc chuyển sang EOL, sang đoạn tiếp theo hoặc bất cứ điều gì. Các phím tắt này giúp chúng tôi điều hướng nhanh hơn và thông minh hơn nhiều so với các mũi tên đơn. Chúng ta có giống với hjkl? Không, chúng tôi không. Chúng ta có thể sử dụng một số đếm, nếu chúng ta muốn, nhưng ai muốn đếm các ký tự cho mỗi chuyển động? Làm 14kvới sự giúp đỡ của relativenumberlà tuyệt vời nhưng những gì về chuyển động ngang? Đối với các chuyển động lớn, hjklthực sự tồi tệ hơn so với sửa đổi + mũi tên. Và đoán xem? Phong trào lớn là những gì chúng ta cần nhất.

Nhưng chúng tôi là những kẻ khốn may mắn, biên tập viên yêu thích của chúng tôi có hàng tá chuyển động chạy vòng quanh cả hai mũi tên hjkl : bBeEwW/?*#{}()vân vân. Các lệnh này có sức mạnh vô cùng lớn hơn hjklvà đối với hầu hết các phần logic và trực quan hơn rất nhiều nếu bạn đã quen Ctrl+Rightvà bạn bè.

Chuyển từ <Right><Right><Right><Right><Right><Right><Right><Right><Right>sang lllllllllhoặc thậm chí 9llà vô nghĩa.

Chuyển từ <Right><Right><Right><Right><Right><Right><Right><Right><Right>sang <C-Right>là tốt hơn nhiều. Từ đó, chuyển sang wvừa dễ dàng vừa nhanh chóng. Không cần <nop>mũi tên của bạn!

Nếu các lệnh này hữu ích hơn, mạnh mẽ hơn và trực quan hơn hjkl, tại sao trong tất cả địa ngục lại có quá nhiều blogger và bình luận nhấn mạnh vào việc thay thế các mũi tên bằng hjkl?

Tôi có. Không ý kiến.

Tóm lại, hjklcó vị trí của chúng trong hộp công cụ của chúng tôi bởi vì chúng tôi luôn phải di chuyển bằng 2 ký tự hoặc dòng nhưng chúng thường không phải là cây che giấu khu rừng. Hãy cảnh giác với những người rao giảng chống lại các mũi tên: những gì họ có trong cửa hàng cho bạn có thể không tốt hơn chút nào.


Lúc đầu, tôi nghĩ rằng bạn sẽ nói rằng 'hjkl' là vô dụng, nhưng nắm bắt tốt, chuyển động từ / đoạn / câu hữu ích hơn nhiều so với câu thần chú liên quan đến chuyển động của một nhân vật.
Xavier T.

1
Cảm ơn. Tôi đã có một cuộc thảo luận tương tự trên HN vào một ngày khác mà trật bánh vì từ ngữ kém. Tập trung nỗ lực của một người vào hjkl vô ích nhưng hjklhữu ích.
romainl

5
Tương tự ở đây: cuối cùng tôi thích câu trả lời của bạn, nhưng tôi nghĩ rằng giai điệu xuất hiện như tiếng rít / trolling / rực lửa không cần thiết.
ChúZeiv

Đừng gọi chúng là vô dụng, tranh luận về tốc độ là một điều tốt và cách HJKL làm việc với các lệnh VIM khác theo cách mà các phím mũi tên cũng không phải là một điều quan trọng.
Aviator45003

@TC Có ví dụ nào để làm cho toàn bộ cuộc tranh luận thú vị hơn không?
romainl

18

Những người khác đã mô tả lý do tại sao các cách di chuyển con trỏ xung quanh được ưa thích hơn, nhưng ít được nói để trả lời câu hỏi, tại sao nó được coi là một ý tưởng tồi để sử dụng các phím mũi tên?

Tôi nghĩ lý do chính (và @Squeezy có phần ám chỉ điều này) là vào thời của các thiết bị đầu cuối như VT100, các phím mũi tên đã tạo ra một chuỗi thoát được chương trình đang chạy. (Vì các phím mũi tên không được thể hiện trong ASCII, nên việc gõ các phím mũi tên phải được truyền đạt theo một cách "đặc biệt" nào đó.) Chuỗi thoát thường là một kiểu như

ESC [ A

tùy thuộc vào thuộc tính của thiết bị đầu cuối, kết nối và chế độ con trỏ của bạn . Nếu hệ vỏ của bạn hoặc chương trình của bạn không được cấu hình đúng cho thiết bị đầu cuối, chúng sẽ không hiểu chuỗi thoát như một phím mũi tên.

Khi tôi học đại học, đăng nhập vào Ultrix qua các thiết bị đầu cuối VT100, nếu tôi nhấn một mũi tên trong khi ở chế độ chèn, thì ESCnó sẽ được hiểu là "thoát khỏi chế độ chèn", và sau đó [ Ađược hiểu là các lệnh ở chế độ bình thường . Rõ ràng không phải là những gì người dùng muốn hoặc mong đợi!

Ngày nay, việc xử lý các thiết bị đầu cuối và phím mũi tên dường như mạnh mẽ hơn, đặc biệt là trong môi trường GUI. Nhưng những vấn đề tương tự vẫn xảy ra khi sử dụng vim qua SSH hoặc Telnet.


14

Sử dụng các phím mũi tên sẽ bị cau mày vì nó buộc bạn phải di chuyển các ngón tay từ homerow khi sử dụng bố cục QWERTY và từ bảng ký tự (?) Khi sử dụng Dvorak hoặc bất kỳ bố cục nào khác.


4
Ồ Nghiêm túc? Tôi không muốn tin điều đó, vì nó sẽ ám chỉ rằng những người thiết kế Vim sẽ nghĩ rằng người dùng của họ dành nhiều thời gian để gõ hơn là suy nghĩ.
Renan

13
Tại sao di chuyển bàn tay của bạn ngụ ý suy nghĩ?
EBGreen

8
tốt, khi tôi phải làm điều đó ở trường, bạn phải nhấn esc trước khi bạn có thể sử dụng điều hướng hjkl, vì vậy bạn đã bỏ tay trái ra khỏi hàng nhà để đưa bạn hồng hào lên Esc. Tôi nhớ rằng để quay lại một khoảng trắng và chèn một ký tự bạn phải nhập 'Esc: hi' và sau đó nhập ký tự bạn muốn chèn. Điều đó không hữu ích lắm.
Frank Thomas

1
@Renan - bạn đang giả sử 'gõ' có nghĩa là 'chèn văn bản'. Tôi cũng có những ngón tay ở hàng nhà khi đọc và suy nghĩ, vì bàn phím là cách tôi điều hướng trong Vim: tìm kiếm để di chuyển, mở các tệp khác để so sánh mã, nhảy xung quanh để sửa lỗi chính tả, v.v.
Nathan Dài

2
@Renan - 1) bạn đánh giá thấp sự tiết kiệm và 2) những thứ nhỏ nhặt cộng lại. Tôi đã thấy người dùng Vim gõ cảm ứng chỉnh sửa với tốc độ gấp 10 lần các nhà phát triển khác. Ở tốc độ đủ, chỉnh sửa trở nên tự động và không làm gián đoạn suy nghĩ hoặc dòng chảy của một người. Thật là một niềm vui khi làm việc theo cách này, vì vậy nó làm nổi thuyền của tôi, nhưng tôi cá rằng đó là một sự tăng năng suất lớn hơn bạn nghĩ. Hãy thử xem các lập trình viên như Gary Bernhardt là một ví dụ.
Nathan Long

10

Các phím mũi tên biểu hiện một vấn đề - nó đã được biết đến trong vi - trên các kết nối chậm, như trên modem 1200 baud. Mũi tên dịch thành một chuỗi ESC như thế nào ESC a. Bây giờ khi thời gian kết nối ESC và quá lâu, cuối cùng bạn sẽ nghe thấy tiếng BEL (hoặc nhìn thấy đèn flash) theo sau là chế độ chắp thêm. Điều này sẽ không xuất hiện với các hjklphím.


Tôi nghĩ ESC [ Alà những gì bạn đang đề cập đến?
LarsH

2
ESC [ Alà một thiết bị đầu cuối DEC VT-100 (thiết bị đầu cuối ANSI có nguồn gốc mạnh mẽ từ mũi tên DEC VT-100). IIRC, ESC Alà mũi tên ADM-3A, hoặc có thể là mũi tên DEC VT-52. Điểm vẫn giữ nguyên, tuy nhiên, ESCký tự được gửi như một phần của phím mũi tên dễ bị nhầm lẫn với cách ESCgõ thủ công.
RBerteig

@RBerteig: Tốt để biết.
LarsH

5

Về câu hỏi thứ hai:

[I] nếu bạn không sử dụng các phím mũi tên, làm thế nào bạn có thể di chuyển con trỏ trong chế độ Chèn?

Đối với một người là chủ, và do đó coi thường các phím mũi tên, khái niệm "chế độ" tương tự không tồn tại.

Master thêm văn bản mới bằng cách sử dụng không phải là chế độ chèn, mà là các lệnh chèn hoặc thay thế hoàn chỉnh bắt đầu bằng một mã opcode i, ohoặc cwđược theo sau bởi văn bản tải trọng và bị chấm dứt bởi ESC. Các lệnh có một cú pháp và do đó, máy di chuyển qua các trạng thái trong việc chấp nhận cú pháp của các lệnh, nhưng trong mô hình của trình soạn thảo chính, chúng không tạo ra một chế độ. Điều mà người học việc gọi một cách ngây thơ là "chế độ", là cho chủ một trạng thái lệnh chưa hoàn thành, một tình huống kinh tởm nhất mà chủ nhân tránh.

Bất cứ khi nào chủ nhận ra, trong khi ở giữa lệnh chèn hoặc thay thế, văn bản đó phải được chèn hoặc xóa khác với vị trí ký tự tiếp theo được chỉ định bởi con trỏ, chủ sẽ chấm dứt lệnh chèn và giải phóng một trong hàng tá hiệu quả lệnh di chuyển (dùng đến mức thấp hjklnếu một cách mạnh mẽ hơn rõ ràng không được áp dụng).

Ngoài ra, do chủ hiếm khi bị phân tâm theo cách để bỏ lệnh chưa hoàn thành, nên hiếm khi, chủ nhân sẽ khiến trình soạn thảo phát ra tiếng bíp do sự xuất hiện của ESC"chỉ trong trường hợp".

(Tuy nhiên, khi mạng bị chậm hoặc máy bị tắt, đồng bảng chính trên ESCphím sẽ giận dữ và lặp đi lặp lại, giống như mọi người khác.)


2
Hãy nhớ rằng, nếu vimục nhập lệnh chèn là một chế độ, thì để công bằng, chúng ta phải xác định tất cả các chế độ như vậy trong các trình soạn thảo khác và gọi chúng là phương thức. Chẳng hạn, khi chúng tôi nhấn Ctrl-X trong Emacs, chúng tôi đang ở "chế độ", ví dụ, có thể nhấn Ctrl-S để lưu tài liệu, nó sẽ không hoạt động bên ngoài "chế độ" đó.
Kaz

5
  • các phím mũi tên có thể không hoạt động tốt trong một số môi trường nhất định. hjkl là các ký tự bình thường và được hiểu rõ bởi tất cả các loại thiết bị đầu cuối.
  • Bạn không di chuyển con trỏ trong chế độ Chèn (ngoại trừ Backspace và sửa lỗi chính tả ngắn), ý tưởng của vi là chỉ nhập chế độ Chèn để nhập nội dung nào đó. Chuyển động được thực hiện trong chế độ Bình thường
  • Nếu bạn có thể, bạn nên tránh sử dụng hjkl để di chuyển bất cứ nơi nào có thể áp dụng, và thay vào đó chỉ sử dụng chúng cho chỉ đường. Có nhiều tùy chọn để di chuyển trong vi , xem: http://vim.wikia.com/wiki/Moving_around

Trên thực tế, bạn có thể di chuyển con trỏ trong chế độ chèn, ít nhất là sang trái, sử dụng backspace. Nhưng tôi đồng ý bạn không thể di chuyển nó một cách tự do.
LarsH

Tôi đã cố gắng bày tỏ rằng bạn không muốn di chuyển con trỏ trong chế độ Chèn .
Bóp

Xin lỗi, tôi đã hiểu nhầm những gì bạn viết khi nói rằng bạn không thể di chuyển con trỏ trong chế độ chèn. Trên thực tế tôi muốn di chuyển con trỏ trong chế độ chèn: nếu tôi nhập một số văn bản mới và tôi nhấn nhầm phím, tôi muốn sử dụng backspace để sửa nó. Nhưng ngoài việc sử dụng hạn chế đó, tôi đồng ý.
LarsH

3

Vâng, vì nhiều lý do được đề cập ở trên, viban đầu được viết để sử dụng hjkl, nhưng " không bao giờ " là một tuyên bố khá lớn.

Tôi có xu hướng sửa đổi vim(và các công cụ khác mà tôi sử dụng) để hành xử như tôi muốn. Điều này hoạt động rất tốt trên máy của tôi, nhưng là một nhà phát triển nhúng, tôi không phải lúc nào cũng chọn những gì trên máy tôi hỗ trợ. Tôi tình cờ thấy các máy cũ chỉ có hjklđiều hướng trong vidịp. Tôi cuối cùng nhận được các mã kiểm soát được chèn vào tệp của mình trong một hoặc hai giây cho đến khi tôi bỏ lại thói quen của mình và chuyển sang hjkl.

Lý do hợp lệ duy nhất tôi có thể đưa ra là "không bao giờ sử dụng các phím mũi tên trong Vim!" là để bạn có thể sử dụng các máy không thể xử lý các phím mũi tên. Điều đó cảm thấy như một lý do khá mỏng để nói " không bao giờ ."


3

nếu bạn không sử dụng các phím mũi tên, làm thế nào bạn có thể di chuyển con trỏ trong chế độ Chèn?

Lý do chính tại sao tôi không khuyến khích mọi người sử dụng các mũi tên rõ ràng là nó cho phép bạn di chuyển xung quanh trong khi ở chế độ chèn.

Một trong những vấn đề kỳ lạ nhất với việc học vim cho người mới là lệnh hoàn tác của vim hoạt động bằng cách hoàn tác hành động cuối cùng , không phải là lần nhấn phím cuối cùng . Nhiều người bạn của tôi cuối cùng ở trong chế độ chèn toàn bộ vì không bao giờ có lý do để rời khỏi nó. Khi họ hỏi tôi "Làm thế nào để tôi hoàn tác?" Tôi trả lời với "nhấn chữ u từ chế độ lệnh", họ cảm thấy bực bội khi vim xóa toàn bộ tập tin.

"Vim là một trình soạn thảo văn bản khá vô giá trị nếu nó không thể hoàn tác mọi thứ đúng."

Thật khó để sử dụng một công cụ trước khi bạn học cách.

Vim chỉ trở nên hữu ích sau khi bạn học cách sử dụng nó. Sức mạnh của vim là ở cách bạn có thể nói với nó "làm điều đó một lần nữa" hoặc "hoàn tác điều đó" hoặc "chỉ làm điều đó khi tôi nhấn phím nóng macro này" thông qua bộ nhớ cơ tiềm thức. Nếu "điều đó" trở thành "nhập toàn bộ tệp từ đầu đến cuối", tôi đồng ý, vim không hữu ích chút nào.

Vì lý do đó, bạn chỉ nên nhập văn bản khi bạn vào insert mode. Tránh các phím mũi tên chỉ là một cách chúng tôi đã tìm thấy để giúp bạn trở thành người dùng vim tốt hơn, nhanh hơn.


0

Chạy vim trong khi được bóc vỏ vào thiết bị Android đang chạy ssh daemon trong kbox đã khiến tôi thoát ra khỏi vùng thoải mái của mình. Vì Trình mô phỏng đầu cuối Anroid trên thiết bị sử dụng các nút âm lượng để thay thế các tổ hợp phím đặc biệt (ctrl + bất cứ thứ gì), một số phím tôi thường sử dụng trên bàn phím không hoạt động trong tình huống này.

Ví dụ: phím Chèn không hoạt động trong môi trường này, vì vậy tôi đang sử dụng Iđể chuyển sang chế độ chèn. Phím Esc, mà tôi thường sử dụng để thoát chế độ chèn, cũng không hoạt động nên tôi đang sử dụng ctrl + [để thoát. Phím Home và End không hoạt động như tôi đã quen. Thay vào đó, tôi đang dựa vào các phím tắt 0$trước đây tôi chưa bao giờ bận tâm để đến đầu hoặc cuối của một dòng.

Dù sao, các phím mũi tên vẫn hoạt động như bình thường trong tình huống của tôi, nhưng thật tuyệt khi biết rằng các phím tắt tối giản ở đó.


0

chỉ cần viết lệnh sau trước khi viết bằng vim: -

  1. thoát
  2. : đặt nocp

Một vấn đề với điều này là bạn có thể phải viết nó mỗi lần.


tốt, điều này sẽ hữu ích khi bạn muốn sử dụng phím mũi tên trong chế độ chèn
0decimal0

0

Đây là 2 của tôi.

Làm bất cứ điều gì bạn cảm thấy thoải mái. Nếu bạn sử dụng các trình soạn thảo khác nhau, có thể dễ dàng sử dụng các phím mũi tên để thống nhất.

Mặt khác, nó thực sự tuyệt vời, vi (và vim) không cần bất kỳ khóa đặc biệt nào, ngoại trừ có lẽ. Bạn có thể có thể hack một máy chủ cũ của IBM để hoạt động như một thiết bị đầu cuối.

Một điều khác cần chú ý là các phím mũi tên có thể không hoạt động như mong đợi. Tôi đã sử dụng thiết bị đầu cuối nơi họ không làm việc. Tôi không chắc chắn chính xác cách chúng được triển khai trong Vim nhưng tôi khá chắc chắn rằng nó không đồng nhất. Bộ nhớ đốm của tôi thậm chí dường như nhớ lại một triển khai trong đó chúng được triển khai dưới dạng macro vim.


0

Tên của trò chơi với các trình soạn thảo văn bản nâng cao dường như là "di chuyển vội vàng" và giảm chuyển động lãng phí / lặp đi lặp lại. Có một số thời gian bị mất khi bạn di chuyển từ các phím chữ cái sang các phím mũi tên (tùy thuộc vào kích thước bàn phím) và trở lại hàng chủ. Nhưng nếu bạn có thể đến phím ESC bằng tay trái hoặc các chế độ chuyển đổi ngón đeo nhẫn của bạn sẽ trở thành một chuyển động lỏng và trong suốt phiên chỉnh sửa, sẽ có tốc độ tăng.

Và đây là chìa khóa cho phần thứ hai của câu hỏi của bạn, thoát khỏi chế độ chèn bằng cách nhấn ESC bằng bên trái và di chuyển bằng hjkl bằng bên phải của bạn. Cuối cùng, bạn sẽ có thể làm điều này mà không bỏ qua một nhịp.

Điều đó được nói rằng tôi chưa bao giờ có được bất cứ nơi nào với Vim cho đến khi tôi thử một số điều được đề cập ở đây , quan trọng nhất là phần " Nhận hiệu quả: ánh xạ phím tắt "

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.