Cách di chuyển con trỏ từng chữ trong OS X Terminal


762

Tôi biết kết hợp Ctrl+ Ađể nhảy đến đầu của lệnh hiện tại và Ctrl+ Eđể nhảy đến cuối.

Nhưng có cách nào để nhảy từng chữ, như Alt+ / trong các ứng dụng Cacao không?


2
Bạn đang sử dụng vỏ gì? Bash?
Sargun Dhillon

4
iTerm2 đẹp hơn nhiều so với thiết bị đầu cuối tích hợp. Tôi đã đăng hướng dẫn bên dưới về cách tùy chỉnh bàn phím :)
cwd

21
Các ALTphím tắt đã được thêm vào Terminal trong phiên bản OS X mới nhất.
Mosty Mostacho

7
Theo ý kiến ​​của tôi, đây không phải là chủ đề, Bash shell là một môi trường lập trình có liên quan và các ràng buộc về đường đọc có sức lan tỏa trong hầu hết các ứng dụng Linux CLI phổ biến. Ngoài ra, hãy nhìn vào số lượng upvote, cộng đồng đã lên tiếng.
GL2014

11
Mở lại bình chọn, OS X Terminal được coi là một công cụ lập trình.
djechlin

Câu trả lời:


567

Ra khỏi hộp bạn có thể sử dụng Esc+ khá kỳ quái + Fđể di chuyển đến đầu của từ tiếp theo và Esc+ Bđể di chuyển đến đầu của từ hiện tại.


47
Thật bất tiện khi nhấn lại cả hai phím để thực hiện lại lệnh một lần nữa. Tôi thấy khá khập khiễng khi làm điều này trong Mac OSX Terminal, so với Terminal Gnome.
Phương Nguyễn

245
Bạn có thể bật "Sử dụng tùy chọn làm khóa meta" trong Terminal> Tùy chọn> Cài đặt> [hồ sơ]> Bàn phím . Sau đó, bạn không cần phải nhập Esc riêng.
Chris Trang

7
Ngoài ra nếu bạn nhấn Esc+ Fkhi ở cuối dòng hoặc tổ hợp phím khác ở đầu dòng, nó chỉ chèn chữ cái thay thế. Làm phiền!
Noldorin

10
Re-bizarre phạm lỗi: The F F F Control-F di chuyển con trỏ Chuyển tiếp một ký tự và Control-B di chuyển con trỏ trở lại một ký tự. Sử dụng công cụ sửa đổi Meta (hoặc ESC) có nghĩa là di chuyển bằng từ ngữ. Đây là các ràng buộc tương thích emacs. Nếu bạn đang sử dụng bash, có một tùy chọn để sử dụng các ràng buộc tương thích vi hoặc bạn có thể tùy chỉnh chúng hoàn toàn với ~/.inputrc.
Chris Trang

5
Rất tiếc, sử dụng tùy chọn làm meta không phải là một tùy chọn cho những người trong chúng ta cần phím tùy chọn để nhập các ký hiệu shell quan trọng như ~ và | (giống như trên bàn phím tiếng Pháp).
Eric O Lebigot

417

Trên Mac OS X - các phím tắt sau đây hoạt động theo mặc định. Lưu ý rằng bạn phải thực hiện phím Tùy chọn hoạt động giống như Meta trong tùy chọn Terminal (dưới tab bàn phím)

  • alt (⌥)+F để nhảy F trở đi bằng một từ
  • alt (⌥)+B nhảy B khó hiểu bằng một từ

Tôi đã quan sát thấy rằng các ràng buộc khóa mặc định của emacs đối với điều hướng văn bản đơn giản dường như hoạt động trên các bash shell. Bạn có thể dùng

  • alt (⌥)+ Dđể xóa một từ bắt đầu từ vị trí con trỏ hiện tại
  • ctrl+ Ađể nhảy để bắt đầu dòng
  • ctrl+E để nhảy đến cuối dòng
  • ctrl+K để giết dòng bắt đầu từ vị trí con trỏ
  • ctrl+Y để dán văn bản từ bộ đệm kill
  • ctrl+R để đảo ngược tìm kiếm các lệnh bạn đã nhập trong quá khứ từ lịch sử của bạn
  • ctrl+S để chuyển tiếp tìm kiếm (hoạt động trong zsh cho tôi nhưng không bash)
  • ctrl+F để di chuyển về phía trước bởi một char
  • ctrl+B để di chuyển lùi bởi một char
  • ctrl+ Wđể loại bỏ từ ngược từ vị trí con trỏ

1
Cảm ơn! Tôi đã tự hỏi tại sao nó không hoạt động ra khỏi hộp, đó chính xác là những gì tôi cần.
Flov

11
Bạn có thể thay đổi meta trong iterm2 như sau: Tùy chọn -> Cấu hình -> Phím -> Phím tùy chọn bên trái đóng vai trò +ESC, sau đó bạn có thể sử dụng TÙY CHỌN f / b để di chuyển từ tiến và lùi tương ứng. Thêm
Alan Dong

5
[ Ctrl + W ] - để xóa từ ngược khỏi vị trí con trỏ
YemSalat

[ctrl + u] - để xóa toàn bộ mục nhập
Cornelius

286

Đây là cách bạn có thể làm điều đó

Theo mặc định, Terminal có các phím tắt này để di chuyển (trái và phải) từng chữ:

  • esc+ B(trái)
  • esc+ F(phải)

Bạn có thể cấu hình alt+để tạo các chuỗi đó cho bạn:

  • Mở tùy chọn Terminal (cmd + ,);
  • Tại tab Cài đặt, chọn Bàn phím và bấm đúp ⌥ ← nếu có, hoặc thêm nó nếu không.
  • Đặt công cụ sửa đổi theo ý muốn và nhập phím tắt trong hộp: esc+B , tạo văn bản \033b(bạn không thể nhập văn bản này theo cách thủ công).
  • Lặp lại cho từ phải ( esc+ Ftrở thành\033f )

Ngoài ra, bạn có thể tham khảo bài đăng trên blog này tại textmate:

http://blog.macromates.com/2006/word-movement-in-terminal/


7
Đối với người dùng MacOSX 10+ và iTerm: Bạn chỉ định phím tắt cho các tùy chọn chung hoặc dưới dạng tổ hợp phím hồ sơ. Hãy chắc chắn rằng bạn chọn: "Gửi thoát trình tự" trên menu thả xuống chọn và đầu vào chỉ Bđể lại hoặc Fcho chuyển tiếp vào Esc+lĩnh vực
Gus

+1 cho một bản ghi nhớ tuyệt vời mà tôi đã không nghĩ đến trước đó. Tôi chắc chắn sẽ / không may không nhớ điều này ngay bây giờ vì tôi đã định cấu hình alt leftalt righttạo các chuỗi đó
Arc676

Nếu tôi thêm Ánh xạ khóa vào Terminal, nó sẽ liên kết nó với '^ [B' thay vì Esc-B.
Andrea Bergonzo

164

Chuyển sang iTerm2 . Nó miễn phí và đẹp hơn nhiều so với thiết bị đầu cuối cũ đơn giản. Ngoài ra, nó có nhiều tùy chọn hơn để tùy chỉnh, như phím tắt.

Ngoài ra tôi thích rằng bạn có thể sử dụng cmdvà 1-9 để chuyển giữa các tab. Hãy thử nó và bạn sẽ không bao giờ quay trở lại thiết bị đầu cuối thông thường :)

Cách thiết lập tùy chọn bàn phím tùy chỉnh trong iterm2

  • Cài đặt iTerm2
  • Khởi chạy và sau đó đi đến khung ưu tiên.
  • Chọn tab hồ sơ bàn phím
  • Bạn sẽ cần phải sao chép hồ sơ sang một cái gì đó mới và sau đó xóa các phím tắt phím mũi tên như ^+ Right/Left hoặc nếu bạn không quan tâm đến bản sao lưu, chỉ cần xóa chúng khỏi hồ sơ mặc định.
  • Tiếp theo, đảm bảo hồ sơ sửa đổi của bạn được chọn (được gắn dấu sao)

Hình 1.png

  • Bây giờ chọn tab bàn phím (hàng trên cùng)

iTerm 2

  • Nhấp vào nút dấu cộng để thêm phím tắt mới
  • Trong hộp đầu tiên loại CMD+Left arrow
  • Trong hộp thứ hai chọn "gửi mã thoát"
  • Trong hộp thứ ba gõ chữ cái B

Hình 2.png

  • Lặp lại với các tổ hợp phím mong muốn. escape+ Bdi chuyển một từ sang trái, escape+ fdi chuyển một từ sang phải.
  • bạn cũng có thể muốn thiết lập cmd+ dđể xóa từ phía trước con trỏ với escape+d

Tôi thường nhấn nhầm nút ( cmd/ control/ alt) bằng phím mũi tên và vì vậy tôi có các tổ hợp phím mũi tên của mình với các nút đó được đặt để nhảy về phía trước và quay lại các từ, nhưng vui lòng làm những gì phù hợp nhất với bạn.


4
Bất kể tôi làm gì, tôi không thể nhập Ctrl + Arrow Lefthoặc Right- UpDownhoạt động: / đã thử và không có cấu hình mới được đặt làm mặc định
Tobi

4
Giải pháp: Tôi đã phải tắt các phím tắt điều khiển nhiệm vụ trong Tùy chọn hệ thống MacOS -> Bàn phím :)
Tobi

Hướng dẫn trên không hoạt động với iTerm2 nữa. Vui lòng xem câu trả lời dưới đây của tôi cho iTerm2 Build 3.3.4.
Treo

150

Trên thực tế có một cách tiếp cận tốt hơn nhiều. Giữ option( alttrên một số bàn phím) và nhấn các phím mũi tên sang trái hoặc phải để di chuyển bằng từ. Đơn giản như thế.

option
option

Cũng ctrlesẽ đưa bạn đến cuối dòng và ctrlasẽ đưa bạn đến điểm bắt đầu.


2
Đôi khi điều này không hoạt động trong một số trường hợp nhất định. Đối với tôi, khi tôi mở Terminal.app, nó vẫn ổn, nhưng đối với IntelliJ, nó chỉ được in [D[C. Để khắc phục điều này, thêm bind '"[D": backward-word'bind '"[C": forward-word'vào của tôi .bashrc.
Jamie Counsell

@JamieCounsell Tôi đã thêm điều ràng buộc với tôi .bashrcnhưng nó không hoạt động, có gì sai với tôi không? (Tôi sử dụng RubyMine)
张艳军

@ Tôi không chắc chắn nếu RubyMine đọc .bashrckhi thiết bị đầu cuối khởi động. Hãy thử echo "here"và xem nếu thông báo đó hiển thị khi bạn mở một thiết bị đầu cuối mới. Ngoài ra, bạn phải đóng và mở lại thiết bị đầu cuối hoặc chạy source ~/.bashrcđể có được nó để đọc tệp mới.
Jamie Counsell

79

Tôi có Alt+ / làm việc: mở Tùy chọn »Cài đặt» Bàn phím , đặt mục nhập cho con trỏ tùy chọn bên trái để gửi chuỗi sang shell: \ 033b và đặt con trỏ tùy chọn bên phải để gửi chuỗi sang shell: \ 033f . Bạn cũng có thể sử dụng điều này cho các tổ hợp phím Control khác.


20
Để có \ 033b, bạn thực sự cần nhấn Esc, sau đó b.
Matthew Schinckel

7
Tôi đang sử dụng Snow Leopard và thấy rằng nó chỉ hoạt động khi bạn kích hoạt Enable option as meta key. Nhân tiện, nó rất tuyệt Chìa khóa chắc chắn sẽ thuận tiện hơn rất nhiều khi so sánh với Esc + B hoặc Esc + F
Phương Nguyễn

2
Thoát khỏi sự tò mò, chính xác những gì đang xảy ra ở đây? Tại sao mã này khác nhau để bắt đầu trong OSX? Làm thế nào tôi có thể tìm thấy các mã khác như vậy?
Koobz

trong máy mac của tôi Tùy chọn> Cấu hình> Phím tùy chọn bên trái được đặt là + Ecs
Arun

38

Trên thực tế, nó phụ thuộc vào loại vỏ bạn sử dụng, tuy nhiên hầu hết các vỏ đều có các ràng buộc tương tự. Các ràng buộc mà bạn đang đề cập đến (ví dụ Ctrl+ ACtrl+ E) là các ràng buộc bạn sẽ tìm thấy trong nhiều chương trình khác và chúng được sử dụng cho các lứa tuổi, BTW cũng hoạt động trong hầu hết các ứng dụng UI.

Dưới đây là giao diện của các ràng buộc mặc định cho Bash:

Các phím tắt Bash quan trọng nhất

Cũng xin lưu ý rằng bạn có thể tùy chỉnh chúng. Bạn cần tạo một tệp, đặt tên theo ý muốn, tôi đặt tên của tôi là .bash_key_bindings và đặt nó vào thư mục chính của tôi. Ở đó bạn có thể đặt một số tùy chọn bash chung và bạn cũng có thể đặt các ràng buộc chính. Để đảm bảo chúng được áp dụng, bạn cần sửa đổi một tệp có tên ".bashrc" mà bash đọc khi khởi động (bạn phải tạo nó, nếu nó không tồn tại) và thực hiện cuộc gọi sau đây:

bind -f ~/.bash_key_bindings

~ có nghĩa là thư mục chính trong bash, như đã nêu ở trên, bạn có thể đặt tên tệp theo ý muốn và cũng đặt nó ở nơi bạn thích miễn là bạn cung cấp đúng đường dẫn + tên để liên kết.

Hãy để tôi chỉ cho bạn một số trích đoạn của tệp .bash_key_bindings của tôi:

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off

Chúng chỉ cần đặt một vài tùy chọn (ví dụ: tắt chuông; tất cả có thể được tìm kiếm trên trang web bash).

"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert

Những điều này đảm bảo rằng các ký tự một mình không làm gì ngoài việc đảm bảo rằng ký tự được "gõ" (chúng tự chèn vào vỏ).

"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line

Điều này khá thú vị. Nếu tôi nhấn Ctrl+ Dmột mình (tôi đã chọn d để xóa), không có gì xảy ra. Nhưng nếu sau đó tôi gõ chữ thường w, từ bên trái của con trỏ sẽ bị xóa. Tuy nhiên, nếu tôi gõ chữ hoa, từ bên phải của con trỏ sẽ bị tắt. Tương tự với l và L liên quan đến toàn bộ dòng bắt đầu từ con trỏ. Nếu tôi gõ "a", toàn bộ dòng thực sự bị xóa (mọi thứ trước và sau con trỏ).

Tôi đã nhảy một từ về phía trước trên Ctrl+ Fvà một từ lùi lại trên Ctrl+B

"\C-f": forward-word
"\C-b": backward-word

Như bạn có thể thấy, bạn có thể tạo một phím tắt, dẫn đến một hành động ngay lập tức hoặc bạn có thể tạo một phím tắt, chỉ cần thực hiện một chuỗi ký tự và sau đó bạn phải nhập một (hoặc nhiều) ký tự để thực hiện một hành động như thể hiện trong ví dụ trên.

Vì vậy, nếu bạn không hài lòng với các ràng buộc mặc định, hãy thoải mái tùy chỉnh chúng theo ý muốn. Đây là một liên kết đến hướng dẫn bash để biết thêm thông tin.


commandMã khóa như thế nào ? Trong ví dụ của bạn control\C, nhưng làm thế nào command?
Paschalis

Về cơ bản tôi muốn ánh xạ Ctrl + A sang cmd + trái (đi đến đầu dòng)
Paschalis

1
@Paschalis Trên MacOS X, phím lệnh ánh xạ tới Metabash ( \M), cmd + left sẽ là \M-\e[D. Tuy nhiên, bạn không thể ánh xạ cmd + ... tới bất cứ thứ gì, tất cả các phím tắt lệnh được xử lý (và do đó bị nuốt) bởi chính ứng dụng Terminal (những thứ không bao giờ được chuyển tiếp tới trình bao) và cmd + ánh xạ sang "cửa sổ trước" nếu bạn có nhiều cửa sổ đầu cuối mở. Xin lỗi, không thể với ứng dụng Terminal.
Mecki

18

Sử dụng cài đặt trước chỉnh sửa văn bản tự nhiên !

nhập mô tả hình ảnh ở đây

Về cơ bản, nó liên kết, trong số các chuỗi chính khác, Tùy chọn + LeftArrow cho ^[bchuỗi và Tùy chọn + RightArrow để^[f

Điều này hoạt động trong cá và bash, cũng như trong thiết bị đầu cuối psql.


Đây là cách hiệu quả nhất để thiết lập ánh xạ cũ tốt cho các khóa. Cảm ơn!
fedesismo

Trong trường hợp bất kỳ ai khác bị nhầm lẫn như tôi đã làm, lưu ý rằng cài đặt sẵn này chỉ khả dụng trong tab phụ Khóa hồ sơ , không phải tab Khóa cấp cao nhất .
ben-albrecht

15

Nếu bạn là người dùng Vim, bạn có thể thử chế độ vim của bash. Chạy này hoặc đặt nó trong ~/.bashrctập tin của bạn :

set -o vi

Theo mặc định, bạn đang ở chế độ chèn; nhấn thoát và bạn có thể di chuyển xung quanh giống như bạn có thể ở Vim ở chế độ bình thường, do đó chuyển động bằng từ là whoặc b, và các phím di chuyển thông thường cũng hoạt động .


15

Nếu bạn kiểm tra Use option as meta keytrong tab bàn phím của các tùy chọn, thì các lệnh kiểu emacs mặc định cho từ tiến và lùi tương ứng và ⌥F( Alt+ F) và ⌥B( Alt+ B) tương ứng.

Tôi khuyên bạn nên đọc từ Bash đến Z-Shell . Nếu bạn muốn tăng sức mạnh bash / zsh của bạn!


1
Vâng, nó hoạt động. Nhưng vấn đề là khi tôi muốn gõ dấu ngoặc nhọn ([] {} |) trên Tùy chọn-7, Tùy chọn-8 và Tùy chọn-9. Các tùy chọn bây giờ là meta vì vậy nó kết thúc với Meta-7, Meta-8 ... Bạn có ý tưởng nào không?
Martin Wickman

12

Kể từ Mac OS X Lion 10.7, Terminal maps Option- Left/Right Arrowtheo Esc- b/ftheo mặc định, do đó, giờ đây nó được tích hợp sẵn cho bash và các chương trình khác sử dụng các phím bấm tương thích với emacs này.


12

Giữ phím Tùy chọn và nhấp vào nơi bạn muốn con trỏ di chuyển


1
Không phải là một cách giải quyết tồi.
duyn9uyen

8

Trong Bash, những điều này bị ràng buộc với Esc- BEsc- F. Bash có nhiều, nhiều phím tắt hơn; có một cái nhìn vào đầu ra bind -pđể xem những gì họ đang có.


4

Dưới iterm2's Preferences> Hồ sơ> Phím , bạn nhấp vào +bên dưới chính Mappings và ghi ra một shortcut mới. Đối với Hành động , chọn Send Escape Sequencevà nhập bhoặc fcho ngược và xuôi tương ứng.

Khi tôi cố gắng ghi một cho ( Ctrl+ ), tôi nhận thấy trong trường Phím tắt bàn phím rằng mũi tên không bao giờ xuất hiện. Hóa ra tôi phải vô hiệu hóa Tùy chọn hệ thống của Mac mặc định > Bàn phím> Phím tắt> Cắt điều khiển nhiệm vụ trước tiên để mọi thứ hoạt động, vì chúng sẽ ghi đè các phím tắt mặc định của iterm2. Nên đúng cho ứng dụng thiết bị đầu cuối tiêu chuẩn, quá.

Tùy chọn hệ thống bàn phím


1

Câu trả lời mới cho người dùng iTerm2 Build 3.3.4:

Bước 1: (macOS X) Tùy chọn hệ thống> Bàn phím> tab Phím tắt> Chọn Điều khiển nhiệm vụ (bảng điều khiển bên trái)> Bỏ chọn các phím tắt có nhãn là "Di chuyển sang trái một khoảng trắng" và "Di chuyển sang phải một khoảng trắng"

Bước 2: (iTerm2 Build 3.3.4) Tùy chọn> Cấu hình> Chọn * Mặc định (bảng điều khiển bên trái)> tab Phím> Xóa cả hai mục "⌥->" và "<-"> Đặt cả hai phím "Tùy chọn bên trái (⌥): "và" Phím tùy chọn đúng (⌥): "sang Esc +

Không lộn xộn với các cấu hình shell, không lộn xộn với Terminal masOS (mặc định) kém hơn, không có Esc + F / B, rửa sạch và lặp lại vô nghĩa.

Thỏa thuận được thực hiện!!!

Hãy tận hưởng mẹo này, các CHƯƠNG TRÌNH đồng bào của tôi!


0

Như đã trả lời trước đó, bạn có thể thêm set -o vivào~/.bashrc các ràng buộc để sử dụng vi/ vimkhóa hoặc nếu không bạn có thể thêm phần sau vào .bashrcđể di chuyển bằng Ctrlvà các phím mũi tên:

# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Để bắt đầu hiệu lực của các dòng mã này, một trong hai source ~/.bashrc hoặc bắt đầu một phiên cuối mới.

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.