Tại sao sử dụng các phím mũi tên trong chế độ bình thường được coi là thực hành xấu?


43

Tôi đã đọc nó trong nhiều bài viết ( ví dụ ) rằng việc sử dụng các phím mũi tên ở chế độ bình thường là một cách làm không tốt. Ai đó có thể giải thích tại sao nó được coi là một thực hành sai, nếu có?


5
Một lý do tốt để không sử dụng hjkl là nếu bạn sử dụng bố trí bàn phím khác. Ví dụ, hjkl không tương quan về mặt không gian trong Dvorak và do đó rất khó sử dụng.
Kylos

1
@Kylos Tôi sử dụng hjkltrong Dvorak. Nó chắc chắn ít nhạy cảm hơn so với trên qwerty, nhưng tôi không biết rằng tôi gọi nó là "khó sử dụng"; chúng chỉ là chìa khóa và không khó để tiếp cận chúng hoặc bất cứ thứ gì một khi bạn đã quen với nó.
Dougal

2
Có nhiều huyền thoại tại sao hjklnên là lựa chọn tốt nhất để di chuyển trong một tài liệu. Sự thật là, một số bàn phím có phím mũi tên bật hjklvào thời điểm vi được tạo, vì vậy vi đã sử dụng cùng một phím trong chế độ bình thường để khớp với bố cục bàn phím. Đây là một bài viết với một hình ảnh của bàn phím: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo

8
Bất cứ điều gì có tiếng là khó khăn ... đều thu hút một loại người nhất định. Crossfit, Vim, lập trình chức năng, thuần chay, v.v ... Bây giờ chắc chắn không phải tất cả những người tham gia một trong những hoạt động đó đều thuộc loại đó, nhưng họ thường xuất hiện không tương xứng. Và một phần của sự quyến rũ cho người đó là sự khó khăn của chính hoạt động . Những thứ hạ thấp thanh để vào là sự vô cảm đối với họ: nó làm cho chúng ít đặc biệt hơn. Có những lý do để thích hjkl. Những người tốt. Nhưng họ bị thổi phồng đến tình trạng giáo điều, ít nhất là một phần, bởi vì mọi người phải cảm thấy họ tốt hơn những người khác.
Jared Smith

@Kylos Tôi đồng ý rằng đó hjklkhông phải là tốt nhất từng có trong dvorak. Nhưng là một người dùng dvorak, tôi có thể thấy chúng hơi tiện dụng vì chúng được ghép nối với nhau: như ở jkmột bên của bảng; và hl ở phía bên kia.
nilon

Câu trả lời:


66

Trên thực tế đây không phải là một thực hành xấu.

Rất nhiều người ( bao gồm tài liệu của Vim như hiển thị câu trả lời của @B Layer ) cho rằng bạn sẽ không sử dụng các phím mũi tên vì nó làm cho bàn tay của bạn di chuyển từ hàng nhà (dòng thứ hai của bàn phím nơi bạn có hjkl) và điều đó làm cho bạn kém hiệu quả hơn .

Đây là (ít nhất là IMO) một kết quả tồi tệ từ trò giật vòng tròn "thuần túy" của vim: người dùng mới làm theo điều này một cách mù quáng, một số thậm chí vô hiệu hóa các phím mũi tên và sau đó họ phàn nàn rằng chúng không còn hiệu quả như trước.

Các chỉ cai trị thực để sử dụng vim là để sử dụng nó một cách hiệu quả: nếu bạn cảm thấy thoải mái hơn khi sử dụng LeftRighthơn hl có thể là, sử dụng các phím mũi tên. Vim thậm chí có set mouse=atùy chọn nếu bạn muốn sử dụng chuột!

Một khi bạn đã quen với Vim và nhận được tốt hơn với các chuyển động có sẵn khác nhau ( f, t, ,, ;, w, b, e, ge, và về cơ bản tất cả mọi thứ trong :h quickref), bạn có thể nhận ra rằng bạn không sử dụng phím mũi tên mà nhiều. Và nếu bạn vẫn sử dụng chúng, đó không phải là vấn đề, hãy sử dụng những gì bạn hiệu quả nhất.

Lưu ý rằng đối số của tôi không rời khỏi nhà để có hiệu quả cao hơn theo quan điểm của tôi: Nếu bạn xem tại sao vim sử dụng hjkl bạn sẽ thấy các phím này được chọn vì không có mũi tên nào Phím khi Vi được viết. Người ta có thể lập luận rằng có thể nếu bàn phím khác vào thời điểm này thì không ai coi việc không sử dụng các phím mũi tên là một cách thực hành tốt.


13
Tôi thường thấy mình uốn cong cổ tay rất tệ để chạm vào các phím mũi tên vì tôi đã quá quen với chúng. Cuối cùng tôi đã vô hiệu hóa các phím mũi tên để làm quen với hjklviệc giảm đau từ cổ tay.
Shahbaz

9
Tôi muốn chỉ ra rằng điều này chỉ có ý nghĩa trên bàn phím QWERTY. Đối với một số bố trí hjkl có thể là một nỗi đau thực sự.
coteyr

1
Bạn có thể sử dụng cả hai tùy chọn: cho dù bạn chọn hjkl hoặc mũi tên, bạn có thể liên kết bộ phím lên / xuống khác để di chuyển bằng các dòng trên màn hình và không phải các dòng tệp. Nó giúp khi chỉnh sửa các tập tin với các dòng dài.
dùng31389

1
Tôi đã không nhận ra trước khi đọc câu trả lời của bạn rằng tôi hầu như không sử dụng các phím hjkl và mũi tên vì tôi đã quen với các lệnh chuyển động nâng cao mà bạn đề cập. Điểm tốt!
Spiros

4
Tuy nhiên, tôi đánh giá cao câu trả lời chính xác của bạn, tôi có thể vui lòng ủng hộ bạn với tư cách là người điều hành đồng nghiệp và vi aficionado trong việc cố gắng hết sức để tìm một số cụm từ thay thế ít hạt giống nhất để giật hình tròn mà không gợi lên hình ảnh đáng lo ngại của một chàng trai hay đàn ông không có quần, tất cả đều thủ dâm cùng nhau trong công ty của nhau‽ Làm ơn? :)
tchrist

40

Tôi không biết điều này có thực sự phù hợp nữa không, nhưng tôi là một người hẹn giờ cũ nên đây là một chút lịch sử.

Vào thời xưa, các thiết bị đầu cuối VT100 có các phím mũi tên, nhưng nhấn một nút truyền một chuỗi thoát như <ESC>[Alên, <ESC>[Bxuống, v.v.
Ngoài ra, là một thiết bị đầu cuối nối tiếp giao tiếp ở 9600 baud, người dùng có thể nhấn phím quá nhanh để truyền toàn bộ chuỗi sẽ gây ra một lần nhấn phím làm gián đoạn trình tự nhấn phím trước đó và gây nhầm lẫn vi.

Điều này sẽ khiến vi không thể giải thích được vào chế độ chèn và chèn [B [B [B [B [B [B vào tệp của bạn nếu bạn nhấn giữ mũi tên xuống. Tôi nói không thể giải thích được vì không có gì về trình tự này nên vào chế độ chèn và thực tế là mỗi chuỗi bắt đầu bằng một ký tự ESC nên đã thoát khỏi chế độ chèn. Nhưng nó vẫn chèn rác. Không phải lúc nào - chỉ khi bạn đang vội.

Một người nhanh chóng cảm thấy mệt mỏi vì điều này và quyết định chỉ bám vào các hjklphím.


8
Vì bất kỳ lý do gì, các chương trình thiết bị đầu cuối TCP vẫn sử dụng các phím mũi tên dựa trên thoát và vẫn không có cách phân biệt đáng tin cậy 100% nào giữa việc nhấn phím thoát so với gửi byte đầu tiên của chuỗi thoát phím mũi tên.
supercat

1
@supercat Họ làm có một cách đáng tin cậy để phân biệt những người. Nó được gọi là sử dụng SC81T . Vấn đề là nhiều chương trình không đàm phán điều đó và một số thiết bị đầu cuối có thể không hỗ trợ nó.
jamessan

1
@jamessan: Nếu tôi đọc đúng, bạn đang gợi ý rằng cách phân biệt thoát đáng tin cậy với các phím mũi tên là không sử dụng các phím mũi tên dựa trên lối thoát, liên quan đến nhận xét "vì bất kỳ lý do gì" của tôi về các chương trình vẫn sử dụng thoát- phím mũi tên dựa.
supercat

Hmm, tôi có một thiết bị đầu cuối cũ của IBM có thể mô phỏng VT100, có thể phải thử điều này
một Earwig

3
Tôi chắc chắn có thể xác nhận rằng điều này là đúng, ít nhất là ngược lại, vì trong thập niên 80, chúng tôi đã phải đặt các dấu hiệu trong phòng thiết bị đầu cuối không được sử dụng các phím mũi tên trong vi vì lý do này. Họ liên tục làm hỏng các tập tin của họ khi trình điều khiển tty bị gián đoạn.
tchrist

28

Mặc dù tôi đồng ý với @statox rằng không ai nên bị trừng phạt, xa lánh, bị loại trừ hoặc bị tước lông nếu họ chọn sử dụng các phím mũi tên ... sử dụng phần mềm của bạn theo cách bạn thấy phù hợp ... Tôi sẽ không tiết lộ rất nhiều thái độ laissez-faire nếu tôi đang hướng dẫn cho một người dùng mới cởi mở. Tôi khá khuyến khích rằng họ nên bắt đầu với những thực hành tốt nhất. Chúng là "thực hành tốt nhất" vì một lý do ... chúng đã được sử dụng để có hiệu quả tốt bởi nhiều người đến trước bạn và tôi.

Heck, ngay cả sự giúp đỡ của Vim cũng thúc đẩy bạn theo hướng đó , mặc dù không phải không có cường điệu (" rất chậm") ...

Bạn cũng có thể di chuyển con trỏ bằng cách sử dụng các phím mũi tên. Tuy nhiên, nếu bạn làm như vậy, bạn sẽ làm chậm rất nhiều việc chỉnh sửa của mình vì để nhấn các phím mũi tên, bạn phải di chuyển bàn tay của mình từ các phím văn bản sang các phím mũi tên. Xem xét rằng bạn có thể làm việc đó hàng trăm lần một giờ, điều này có thể mất một lượng thời gian đáng kể.

Ngoài ra còn có một thực tế là bất kỳ lựa chọn nào bạn đưa ra khi bắt đầu có thể trở thành thói quen khó bỏ nếu bạn muốn thay đổi trong tương lai. Vì vậy, tất cả những thứ khác đều bình đẳng tại sao không áp dụng một thói quen được khuyến nghị ngay bây giờ thay vì sử dụng các phím mũi tên không hiệu quả hoặc giết chết carpal?

Tất cả trong tất cả, xem xét đưa ra một nỗ lực trung thực để làm mọi thứ mà không cần phím mũi tên. Sau một khoảng thời gian hợp lý nếu bạn không thể sống mà không lên / xuống / trái / phải ... thì không.

... là những gì tôi sẽ nói với một người dùng mới quan tâm đến ý kiến ​​của tôi. Đừng mang nó theo cá nhân nếu bạn không đồng ý (Tôi đang nói chuyện với bạn, downvoter).


9
Ngay cả khi bạn chấp nhận rằng nó thực sự tốt hơn các phím mũi tên (tôi thậm chí không tin là như vậy) thì nó vẫn ở đâu đó ở cuối danh sách tất cả các "thực tiễn tốt nhất" có thể. Tôi cho rằng có rất nhiều nhiều điều quan trọng hơn so với sử dụng hjkl.
Martin Tournoij

5
@Carpetsmoker Tôi không nghĩ cần phải xếp hạng các thực tiễn tốt nhất. Trừ khi bạn có mong muốn mạnh mẽ để sử dụng các phím mũi tên, tại sao không làm như Vim khuyến nghị? Đặc biệt nếu bạn chưa quen với Vim ... tất cả chúng ta đều biết việc thay đổi cách chúng ta làm điều gì đó một khi đã ăn sâu đến mức nào.
Lớp B

1
"bạn làm chậm rất nhiều việc chỉnh sửa của bạn" - điều đó có vẻ khá cường điệu đối với tôi ... tuy nhiên tôi đồng ý rằng nó đáng để thử. Thật ra nó không đủ quan trọng để gây chiến.
Bóng tối

2
@BLayer không không ở đây - đây là cuộc thảo luận dân sự nhất về chủ đề tôi nghĩ tôi đã xem. Nhưng các cuộc chiến chắc chắn đã được chiến đấu ...
Shadow

1
don't think it's necessary to rank best practicesChà, dường như với tôi rằng chúng ta nên tập trung vào những thứ mang lại cho chúng ta giá trị tốt nhất trong cuộc sống, với điều kiện là tài nguyên là hữu hạn và cuộc sống rất ngắn ngủi. Tôi tình cờ biết các phím hjkl là trái tim do thời thơ ấu chơi trò lừa đảo, larn, angband, v.v. trên máy tính xách tay không có numpad, nhưng một số người đã trải qua tuổi thơ tốt hơn và sẽ phải "tháo gỡ" các phím mũi tên bất kể. Tôi nghĩ rằng các chuyển động học tập, phạm vi, vv là một cách hữu ích hơn nhiều để dành thời gian.
Martin Tournoij

16

Các câu trả lời khác đã nói rằng sự mất hiệu quả từ việc di chuyển bàn tay của bạn từ hàng ghế nhà không phải là vấn đề lớn và tôi hầu như đồng ý. Tuy nhiên, những gì một vấn đề lớn là khi bạn đang học vim, luôn luôn sử dụng các phím mũi tên để tránh chuyển trở lại chế độ bình thường.

Nói cách khác, sử dụng một nơi mà bạn sẽ sử dụng một lần duy nhất hkhông phải là một sự mất mát lớn về năng suất, nhưng sử dụng nơi bạn có thể đã sử dụng EscI một mất mát lớn.

Đó là lý do tại sao mọi người khuyên bạn tránh các phím mũi tên khi bạn học vim, vì nó buộc bạn phải học chế độ bình thường thay vì không bao giờ rời khỏi chế độ chèn. Chế độ bình thường là nơi mà tất cả các hiệu quả đạt được của bạn là.


1
+1. Nói cách khác: "Không sử dụng các phím mũi tên và không sử dụng hjkl." (Giữ lại cường điệu có chủ ý.)
wchargein

3
Trên thực tế, thay vì 10 lần bạn có thể đã sử dụng 1 0 hoặc, thậm chí đơn giản hơn , Home. Cái sau hoạt động ngay cả trong Windows Notepad.
Ruslan

7

Có hai lý do chính khiến mọi người nói rằng bạn không nên sử dụng các phím mũi tên. Một số người cho rằng hjkl được ưa thích vì nó giữ tay bạn ở hàng nhà, điều đó không sai , nhưng cũng không thành vấn đề. Những người khác, bao gồm cả tôi, sẽ nói rằng bạn không nên sử dụng các phím mũi tên nếu bạn di chuyển nhiều hơn một vài ký tự, nhưng bạn cũng không nên sử dụng hjkl.

Điều quan trọng không phải là phím bạn đang sử dụng, mà đúng hơn là bao nhiêu . Nếu bạn muốn chuyển đến đầu từ, bạn không nhấn hhh; bạn nhấn b. Cuối từ là e, không llll. Bắt đầu của dòng : 0, cuối dòng : $. Và bất cứ điều gì hơn nữa, /searchcho các văn bản tồn tại nơi bạn muốn đi. (hoặc bất kỳ lệnh chuyển động nâng cao nào bạn thích).

Nhưng bất cứ khi nào bạn thấy mình gõ cùng một phím nhiều hơn hai lần liên tiếp, có một cách tốt hơn để làm điều đó.


7

Một tuyên bố chính xác hơn có thể là "sử dụng các phím mũi tên là một thực hành tồi trong khi cố gắng học vim tốt hơn " . Những người mới sử dụng vim đã quen với việc sử dụng các phím mũi tên để di chuyển và do đó không học hjkl, do đó không có cơ hội để xem liệu điều này có thích hợp hơn không.

Cá nhân, sau khi có được sự quen thuộc chung với vim, tôi đã vô hiệu hóa các phím mũi tên trong một thời gian để lấy lại hjklvà sử dụng lại chúng sau để đơn giản hóa .vimrc. Sự khôn ngoan thông thường nắm giữ trong trường hợp của tôi; một khi tôi biết cách sử dụng cả hai hjklvà các phím mũi tên, tôi thấy mình gần như chỉ sử dụng phím trước.


6
Tôi không đồng ý. Giống như blog này nói, cách tiếp cận "tất cả hoặc không có gì" cho người mới bắt đầu giúp gây ra danh tiếng "người dùng không thân thiện" của vim. Người dùng mới bắt đầu, bị sa lầy và choáng ngợp và (không ngạc nhiên) kết luận vim là một mớ hỗn độn không lành mạnh và chuyển trở lại một trình soạn thảo nơi họ có thể làm việc hiệu quả. - Nếu bạn đang học bơi, bạn đừng ném mình xuống thuyền ra biển khơi. Hoàn toàn có thể chấp nhận được khi chèo thuyền quanh hồ bơi trẻ con cho đến khi bạn cảm thấy thoải mái với nước.
RM

2
... không có nghĩa là vô hiệu hóa các phím mũi tên sẽ không hiệu quả với mọi người. Nhưng đó là bước "Tôi thích vim và muốn học cách sử dụng nó tốt hơn", không phải là bước "Tôi mới làm quen với vim và muốn học cách sử dụng nó".
RM

5

Câu trả lời thông thường liên quan đến hiệu quả. Bạn có thể đã được đào tạo qua nhiều năm để sử dụng thao tác gõ, trong đó sử dụng bàn tay của bạn trên asdf và jkl;. Phần lớn các ràng buộc chính trong Vi được thiết kế xung quanh thực tế này, bao gồm các lệnh di chuyển hjkl.

Cá nhân tôi thực sự sử dụng cả hai. Tôi sử dụng hjkl khi tôi chủ động chỉnh sửa các phần văn bản lớn và các phím mũi tên khi cuộn qua các tệp nhật ký (và |, g và / khi tôi thực hiện chỉnh sửa tại chỗ trong toàn bộ tệp). Đây chỉ là điều làm việc tốt cho tôi, và trong trường hợp như thế này, đó mới là điều thực sự quan trọng.


2

Từ lâu, nhiều thiết bị đầu cuối không có phím mũi tên hoặc không có tất cả bốn thiết bị đầu cuối. Các hệ thống phần mềm cần điều hướng thường cung cấp một số cách tiếp cận điều hướng mà không cần dựa vào các phím mũi tên và hjkl của vi là một ví dụ điển hình. (Một ví dụ cổ điển khác là Wordstar ^ E- ^ S- ^ X- ^ D.) Khi tiện ích điều hướng bàn phím ngày càng rõ ràng, ngày càng nhiều thiết bị đầu cuối mới bắt đầu đi kèm với các phím mũi tên và các hệ thống phần mềm thường ánh xạ chúng theo các cách cũ của dẫn đường. Tuy nhiên, điều này mang đến một mối lo ngại về tính di động: nếu trẻ em được đào tạo tại các trường học phải dựa vào một tính năng mới lạ mắt như phím mũi tên, thì suy nghĩ là, chúng có thể không thể hoạt động được - một khi đã phổ biến - bàn phím không có phím mũi tên.

Vì vậy, giáo viên của các khóa học về điện toán cơ bản bắt đầu thận trọng cảnh báo sinh viên học cách sử dụng mẫu số chung thấp nhất để tối đa hóa việc làm của họ. Và thực tế này từ lâu đã tồn tại lâu hơn bất kỳ lý do nào mà nó có thể đã từng có.

Trong các triển khai hiện đại của vi, lý do chính để thích hjkl là sử dụng các phím đã ở dưới tay bạn nhanh hơn một chút so với việc di chuyển bàn tay của bạn đến bất cứ nơi nào có phím mũi tên. Dĩ nhiên, nhược điểm của việc tránh chuyển đổi ngữ cảnh của tay bạn là bạn có thể cần phải thực hiện chuyển đổi ngữ cảnh của vi. Ngày nay, khi con người rất hiếm khi được bảo vệ bằng cách gõ tốc độ, dù bạn làm cái này hay cái kia cũng là vấn đề sở thích cá nhân, và không còn gì tệ khi sử dụng phím mũi tên nữa, nếu có.

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.