Các phím home và end có thể được ánh xạ khi sử dụng Terminal không?


76

Các phím homeendphím trên MacBook Pro có thể được mô phỏng bằng fn + mũi tên trái hoặc fn + mũi tên phải. Hoặc khi một số cài đặt nhất định được thay đổi, với phím Command (Apple) thay vì fn.

Không ai trong số này hoạt động trong Terminal.

Vì tôi thường xuyên cần đi đến đầu hoặc cuối dòng và cũng muốn nhảy về phía trước hoặc lùi lại bằng từ.

Làm thế nào tôi có thể nhảy xung quanh trên một dòng trong Terminal?

Câu trả lời:


64

Sử dụng control+ acho HOME và control+ echo END trong Terminal.

Đồng thời sử dụng esc+ fđể di chuyển đến đầu của từ tiếp theoesc+ bđể di chuyển đến đầu của từ hiện tại . (bạn phải cẩn thận về hiện tại và tiếp theo)


2
hoàn hảo! Điều gì về nhảy xung quanh bằng từ? (ctrl-trái và Ctrl bên phải trong cửa sổ)
at01

@ at01 Tôi cập nhật câu trả lời của tôi.
Am1rr3zA

40
Ai thiết kế chìa khóa cho Terminal?!?!
at01

4
Tôi thích sử dụng tùy chọn + mũi tên trái và tùy chọn + mũi tên phải để di chuyển đến đầu từ
Allan Jikamu

2
Ctrl + a và Ctrl + e đã làm việc cho tôi, nhưng không dùng đến việc ánh xạ lại tổ hợp phím như được đề xuất bởi rất nhiều người ở đây, tôi thích thay thế Shift + Home và Shift + End (Shift + Fn + mũi tên trái và Shift + Fn + mũi tên phải trên bàn phím MacBook Pro) cho đầu và cuối dòng.
John Rix

70

Để trả lời câu hỏi về cách lấy đầu hoặc cuối dòng, theo mặc định, Terminal sẽ ánh xạ các khóa này tới nó:

  • shift + home → đầu dòng, tương đương với phím "home" trong các thiết bị đầu cuối bình thường
  • shift + end → end of line, tương đương với phím "end" trong các terminal bình thường

Nếu bạn muốn về nhà và kết thúc để làm việc theo cách "bình thường" (và không yêu cầu thay đổi), hãy chuyển đến [Menu Terminal] → Tùy chọn → tab Cấu hình (hoặc cài đặt trên một số phiên bản của OS X) → Tab phụ bàn phím.

Sau đó sửa đổi / thêm các khóa này thành "gửi chuỗi tới shell" sau đây

  • Trang Chủ: \033[H
  • kết thúc: \033[F

Bạn có thể lấy \033phần bằng cách nhấn phím thoát trong đầu vào hộp thoại chỉnh sửa, nếu bạn cần thêm nó.

Sau đó, nhà và kết thúc sẽ hoạt động như bình thường trở lại (phew).

Cũng lưu ý rằng "alt + ←" và "alt + →" theo mặc định trong bản đồ đầu cuối sang từ trái và từ phải, một kết hợp tiện dụng khác cần nhớ.

Trong các phiên bản sau của Mac OS X, nếu màn hình đầu cuối chuyển lên hoặc xuống khi bạn nhấn phím home / end, phím home có thể cần được đặt thành \033[1~và phím kết thúc \033[4~để có kết quả bạn muốn (không cần thay đổi) .

Vui lòng sửa đổi câu trả lời này để thêm các ràng buộc chính hữu ích hơn, vì nó là một wiki cộng đồng.


5
\ 033 [H và \ 033 [F cho nhà và cuối không hoạt động với tôi; tuy nhiên \ 001 và \ 005 đã làm. Bạn có thể nhập các mã này trong hộp thoại chỉnh sửa bằng cách nhấn ctrl-A và ctrl-E. Tôi đang sử dụng zsh, tôi không chắc liệu điều đó có làm nên sự khác biệt nào không.
JW.

ca + nhà / kết thúc đã làm công việc
isaias-b

1
Đã cố gắng để tìm ra điều này trong một thời gian, điều này đã cứu tôi!
Paul Gray

Điều này hoạt động rất tốt khi bạn đang ở trong ứng dụng thiết bị đầu cuối thực tế cục bộ. Tuy nhiên, khi bạn ssh'd vào một máy macOS, những cái này dường như không hoạt động nữa. Làm thế nào để vượt qua điều này?!
Ahi Tuna

2
@AhiTuna SSH chỉ là kết nối với phiên cuối, không phải là kết nối với trình giả lập thiết bị đầu cuối. Tùy chọn đầu vào luôn được xác định bởi bất kỳ trình giả lập thiết bị đầu cuối nào bạn đang sử dụng.
Bachsau

39

Có vẻ như bạn đang tìm kiếm một số trợ giúp bằng cách sử dụng readline và bash, đây là danh sách điên rồ của các công cụ bàn phím được sửa đổi từ: http://www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla Di chuyển đến đầu dòng.
Ctrle Di chuyển đến cuối dòng.
Escf Tiến về phía trước một từ.
Escb Di chuyển lùi một từ.
Ctrll Xóa màn hình, in lại dòng hiện tại ở trên cùng.

Ctrlk Giết văn bản từ vị trí con trỏ hiện tại đến cuối dòng.
Escd Giết từ con trỏ đến cuối từ hiện tại, hoặc nếu giữa các từ, đến cuối từ tiếp theo.
EscDel Giết từ con trỏ bắt đầu của từ trước, hoặc nếu giữa các từ, bắt đầu từ trước đó.
Ctrlw Giết từ con trỏ đến khoảng trắng trước. Điều này khác với EscDelCtrla vì ranh giới từ khác nhau.

Ctrld Xóa ký tự bên dưới con trỏ.
Ctrl_ Hoàn tác điều cuối cùng mà bạn đã làm. Bạn có thể hoàn tác tất cả các cách trở về một dòng trống.

Và, đây là cách kéo văn bản trở lại vào dòng. Yanking có nghĩa là sao chép văn bản bị giết gần đây nhất từ ​​bộ đệm kill.

Ctrly Yank văn bản bị giết gần đây nhất trở lại bộ đệm tại con trỏ.
Escy Xoay vòng khử và kéo đỉnh mới. Bạn chỉ có thể làm điều này nếu lệnh trước là Ctrlyhoặc Escy.


điều này là vô giá - cảm ơn - tôi ước nó có sẵn dưới dạng một tập tin có thể in ở đâu đó!
matt b

Tôi nhận ra nó không hoàn toàn "tối ưu hóa", nhưng; Tập tin -> In?
Jason Salaz

Wow, đây là những điều siêu khó xử so với thuật ngữ trên linux .. có cách nào để ánh xạ lại điều vô nghĩa này không?
btk

Đúng, hãy thử trang người Bash. (Tôi không biết cách tự làm.)
SilverWolf

6

Đối với những người thích sử dụng các phím mũi tên, nhấn fnShift+ Left Arrowsẽ đưa bạn về nhà trên dòng lệnh. Tương tự, fnShift+ Right Arrowsẽ đưa bạn đến cuối cùng.


6

Bạn có thể di chuyển một từ cùng một lúc với option+ leftoption+ right.

Về việc sử dụng homeend, các ràng buộc mặc định của Terminal là như sau:

  • shift+ home→ nhảy đến đầu dòng
  • shift+ end→ nhảy đến cuối dòng
  • home → cuộn lên trên cùng của bộ đệm cuộn lại
  • end → cuộn xuống dưới cùng của bộ đệm cuộn lại

Trong nhiều ứng dụng đầu cuối khác (trên nhiều nền tảng), các cặp được sửa đổi và không sửa đổi này bị đảo ngược (nghĩa là trần trụi homeendđược sử dụng để nhảy xung quanh dòng hiện tại và các phiên bản sửa đổi (cho dù bằng cách shiftnào khác) được sử dụng để điều hướng bộ đệm cuộn ngược ). Bạn có thể đảo ngược các ràng buộc của Terminal để hoạt động theo cách đó nếu bạn muốn bằng cách làm như sau:

Chuyển đến menu Terminal → Tùy chọn → Cài đặt / Tab hồ sơ → Tab phụ bàn phím.

Sau đó sửa đổi các cặp hành động khóa chính thành như sau:

  • : Gửi văn bản: \ 033 [H
  • : Di chuyển lên trên cùng
  • : Gửi văn bản: \ 033 [F
  • : Di chuyển xuống dưới cùng

Lưu ý: \ 033 được nhập vào hộp văn bản sẽ được gửi trong hộp thoại Chỉnh sửa bằng cách bấm phím thoát.

Trong khi ở đó, bạn có thể muốn trao đổi tương tự các ràng buộc của sửa đổi và không sửa đổi page uppage down, để giữ cho mọi thứ nhất quán: nhấn một phím điều hướng có shiftbiểu thị một lệnh cho chính Terminal (để điều hướng bộ đệm cuộn lại như tài liệu), trong khi nhấn mà không có gửi phím bấm thông qua bất cứ điều gì đang chạy trong nó (ví dụ bash, less, nano, screen, vv). Các cặp hành động chính của nhóm đó là:

  • : Gửi văn bản: \ 033 [5 ~
  • : Cuộn trang lên
  • : Gửi văn bản: \ 033 [6 ~
  • : Cuộn trang xuống


4

Ánh xạ homeendcác phím với chức năng mong muốn của bạn sẽ dễ dàng giải quyết vấn đề.

Nhiều câu trả lời đã được đăng, nhưng trong trường hợp bạn đang sử dụng zsh, bạn có thể đặt homethành:

\001

và đặt endthành:

\005

bằng cách nhấp vào ưu tiên - hồ sơ - bàn phím.


Tôi cũng đã thử điều này nhưng sau đó nó phá vỡ Home and End trong vim :( Bạn có thể ánh xạ chúng theo những gì Alfredo Cardigliano gợi ý: Key: Action: \ 033OH Key: ↗ Action: \ 033OF
curlingdude

Điều này làm việc hoàn hảo cho tôi! Tôi chỉ sử dụng Nano, vì vậy không có vấn đề ở đây.
Sterling Bourne

Vâng, điều này đang làm việc, nhưng không giải quyết vấn đề nói chung. Tôi đã chuyển từ bash sang zsh và tôi đã được sử dụng FN-SHIFT-LEFT / RIGHT .. điều này đã giải quyết vấn đề của tôi: stackoverflow.com/questions/8638012/
Lỗi

1

Đây là cách hiệu quả nhất để làm cho nó hoạt động với vim. Chuyển đến Terminal -> Tùy chọn -> Cấu hình -> Bàn phím và thêm:

Phím: Hành động: \ 033OH

Phím: ↗ Hành động: \ 033OF


1

Tôi muốn cung cấp một giải pháp thay thế cho vấn đề này. Điều này hoạt động tuyệt vời nếu bạn là một người dùng vi. Vim Key Bindings trong Terminal cung cấp cách sử dụng thiết bị đầu cuối của bạn theo kiểu vim. Bạn có thể làm điều này thông qua việc gõ set -o vivào thiết bị đầu cuối và thoải mái đặt nó vào .bash_profilenếu bạn muốn. Sau này, thiết bị đầu cuối của bạn thực sự là một trình soạn thảo vim. Bạn có thể sử dụng escphím để vào chế độ lệnh và đi bộ xung quanh theo cách vim. Ví dụ, đưa 0bạn đến điểm bắt đầu và đưa $bạn đến điểm cuối. Bạn cũng có thể sử dụng IAđi đến đầu và cuối và chuyển sang chế độ chỉnh sửa ngay lập tức. wbcho phép bạn tiến lên và lùi lại bằng một từ. Và nếu bạn cố gắng chuyển sang chế độ trực quan bằng cách nhấnv, bạn sẽ được cung cấp một trình soạn thảo vim và văn bản bạn có khi bạn rời khỏi trình soạn thảo này sẽ được thực thi trong thiết bị đầu cuối.

Hãy lưu ý rằng ràng buộc khóa vim này sẽ vô hiệu hóa tất cả các phím nóng bạn đã học được từ các câu trả lời khác.


0

đây là danh sách ở dạng có thể in được, như mong muốn :)

http://pastebin.com/uCqwn7qs

Tôi cũng đã sửa một "lỗi" trong mô tả. Đây là những gì ban đầu bạn có thể đọc trong hướng dẫn:

ESC-d Giết từ con trỏ bắt đầu của từ trước hoặc nếu giữa các từ với bắt đầu của từ trước đó.

Điều này có mùi nặng giống như một lỗi cắt và dán, vì cả hai câu một phần đều nói cùng một điều. Kể từ logic đơn giản, nửa đầu thực sự phải đọc "từ con trỏ đến đầu từ hiện tại".


0

... những gì về nhảy xung quanh bằng từ? (ctrl-trái và ctrl-phải trong cửa sổ)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
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.