Vim trong OSX: Làm cách nào để lên trang / xuống trang / chuyển đến EOL thông qua tệp vim được mở trong thiết bị đầu cuối?


28

Trong putty, đó là cách tôi chủ yếu sử dụng VIM, tôi có thể làm như sau:

  • Trang lên / xuống: Sử dụng phím lên / xuống Trang gốc. Trong Mac, giải pháp thay thế là Fn + Lên / Xuống, không hoạt động trong thiết bị đầu cuối (không cuộn bên trong tệp vim, nhưng cuộn bộ đệm đầu cuối)
  • Tương tự, các phím Fn + phải / trái không đưa tôi đến đầu / cuối dòng

Làm cách nào để mô phỏng chức năng này trong Mac OS X?


Nó có thể giúp làm rõ câu hỏi của bạn nếu bạn thay thế hoặc tăng "Fn + phải / trái" bằng "Home / End", đó là những gì các kết hợp Fn đó làm.
Chris Trang

Câu trả lời:


48

Đây không phải là một câu hỏi mac, đây thực sự là một câu hỏi vi.

Trong chế độ điều hướng, ctrl-f cuộn xuống một trang và ctrl-b cuộn lên một trang (nghĩ "F" trở đi và "B" ack). Ctrl-d cuộn xuống nửa trang và ctrl-u cuộn lên nửa trang.

^ đưa bạn đến đầu của một dòng và $ đến cuối. Tôi biết, tôi biết, nhưng có những lý do lịch sử cho điều đó.

Đây là một cheat-sheet thực sự tốt về kiểm soát vi. vi là một chút phức tạp, nhưng một khi bạn tiếp thu nó, nó là trình soạn thảo văn bản nhanh nhất và nhanh nhất trên thế giới.


1
"Đây không phải là một câu hỏi mac, đây thực sự là một câu hỏi vi." Chủ yếu là về cách thiết lập sơ đồ bàn phím của ứng dụng Mac OS X Terminal, nhưng hóa ra phần thứ hai của câu hỏi, về bắt đầu / kết thúc dòng, đã có ánh xạ trong Terminal và một giải pháp khả thi là chỉnh sửa bản đồ của vi hiểu nó. Ngoài ra, bản đồ bàn phím Terminal có thể được chỉnh sửa.
Chris Trang

16

Bản đồ tùy chọn mặc định của Terminal Shift- Page UpShift- Page Downcho các chuỗi ký tự cho biết các chương trình như Vim và Emacs sẽ cuộn ( ESC [ 5 ~ESC [ 6 ~).

Nếu bạn muốn các phím này gửi chuỗi ký tự đến thiết bị đầu cuối mà không cần Shiftsửa đổi, bạn có thể tùy chỉnh bản đồ bàn phím:

Thiết bị đầu cuối> Tùy chọn> Cài đặt> [hồ sơ]> Bàn phím

Nếu bạn làm điều này, tôi khuyên bạn nên đảo ngược ý nghĩa của công cụ Shiftsửa đổi cho các phím này bằng cách hoán đổi ánh xạ cho các phím bị dịch chuyển và không bị dịch chuyển, để các hành vi thay thế vẫn khả dụng. Ngoài ra, hãy xem menu View , chứa các lệnh cuộn sử dụng công cụ Commandsửa đổi để chúng khả dụng bất kể bản đồ bàn phím đầu cuối.

Tương tự, Shift- HomeShift- Endđược ánh xạ để di chuyển đến điểm bắt đầu / kết thúc của dòng hiện tại ( ESC [ HESC [ F). Các trình tự này được Bash hiểu, nhưng bạn có thể phải tùy chỉnh Vim để hiểu chúng hoặc chỉnh sửa ánh xạ dành riêng cho Vim. Vim, Emacs và một số chương trình khác gửi một chuỗi thoát để đặt thiết bị đầu cuối vào Chế độ con trỏ ứng dụng, trong đó các phím Home / End gửi ESC O HESC O F, nhưng Terminal (kể từ ngày 10.9) không thực hiện hành vi này. Vì vậy, bạn có thể muốn thay đổi bản đồ bàn phím để gửi các mã khác thay thế (Bash cũng hiểu chúng). (Trên các HĐH khác HomeEndđược sử dụng cho đầu / cuối dòng, vì vậy Terminal cung cấp cho chúng bộ Shiftsửa đổi cho tính đối xứng.)

Control- Left ArrowControl- Right Arrowcũng được ánh xạ thành các chuỗi "di chuyển đến bắt đầu / kết thúc dòng" theo mặc định, mặc dù chúng khác với các chuỗi được ánh xạ tới Shift- HomeShift- End. Thay vào đó, chúng được ánh xạ tới các trình tự tương thích Emacs và Bash ESC [ 5 DESC [ 5 C. Giả sử những thứ này không được Vim sử dụng, cách tiếp cận đơn giản nhất sẽ là tùy chỉnh Vim để chấp nhận chúng, sử dụng ~ / .vimrc.

Lưu ý rằng trong các phiên bản macOS mới hơn, Terminal không còn có ánh xạ rõ ràng cho HomeEndtrong các tùy chọn theo mặc định. Thay vào đó, nó có một hành vi động trong đó các phím tự động ánh xạ để bắt đầu / kết thúc dòng khi màn hình thay thế đang hoạt động, ví dụ như khi sử dụng một ứng dụng toàn màn hình như emacs, vim, screen hoặc tmux. Khi sử dụng chương trình hướng dòng như vỏ trên màn hình chính, chúng tiếp tục cuộn chế độ xem thiết bị đầu cuối theo mặc định. Công cụ Shiftsửa đổi đảo ngược hành vi.


@MarkHu Tôi đã đề cập đến điều đó trong đoạn cuối.
Chris Trang

Như được đề cập một phần trong đoạn cuối, mặc định có thể khác / thiếu trong các phiên bản khác của MacOS. Trong 10.13.6, tôi đã phải thêm \033[5~(và ... 6.) Cho PageDown / Up.
MarkHu

2

Giải pháp dễ nhất và tốt nhất là n+ , trong đó nsố dòng bạn muốn đi xuống và là phím xuống.

Tôi thường xuyên chỉ làm 12+ 22+ .


1

Tôi đã quen với Home / End đưa tôi đến điểm bắt đầu và kết thúc của dòng ở chế độ Chèn (từ sử dụng trong Windows và tôi nghĩ Linux), mà Mac không hỗ trợ. Điều này đặc biệt khó chịu vì khi tôi sử dụng vim trên một hệ thống từ xa, tôi cũng không thể dễ dàng làm điều đó. Sau một số thử nghiệm đau đớn và sai sót, tôi đã đưa ra một số .vimrcdòng làm điều tương tự, và cuối cùng tìm thấy một người khác đã đưa ra một giải pháp tương tự ở đây:

https://coderwall.com/p/fd_bea

Thưởng thức.

:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0
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.