2013-08-26 80 views
5

giả sử tôi muốn nhập lệnh đa dòng thông qua bash Tôi biết rằng tôi có thể nối thêm \ vào cuối dòng để nhập một dòng mớichế độ soạn thảo văn bản để gọi lệnh bash

tuy nhiên, bạn có thể nhập hợp pháp "chế độ soạn thảo văn bản", nơi bạn thậm chí không phải nhập \ và chỉ cần nhấn enter sẽ đủ

ví dụ .. bạn nhập lệnh vào dòng lệnh, trước khi nhập các thông số bạn nhấn một số nút ma thuật cho phép bạn để vào một chế độ vi giống như sau đó bạn nhập công cụ vào "chế độ vi" sau đó bạn thoát ra và sau đó văn bản bạn đã nhập trong "chế độ vi" biến thành các tham số của lệnh thì bạn nhấn enter sau đó lệnh thực hiện

có thể thực hiện điều đó trong dòng lệnh bash không? nếu vậy, làm thế nào để làm điều đó?

Trả lời

5

Xem man bash:

edit-and-execute-command (C-xC-e) 
      Invoke an editor on the current command line, and execute the 
      result as shell commands. Bash attempts to invoke $VISUAL, 
      $EDITOR, and emacs as the editor, in that order. 

mỗi mặc định bash được cấu hình cho chế độ emacs, vì thế mà emacs như lệnh C-xC-e.

Nếu bạn thực sự thích vi, bạn cũng có thể đặt bash của bạn thành chế độ vi: set -o vi. Điều này cho phép bạn thực hiện chỉnh sửa dòng bình thường theo cách vi mà không cần gọi trình soạn thảo rõ ràng.

+2

Lưu ý rằng trong chế độ 'vi',' lệnh chỉnh sửa và thực thi' không còn bị ràng buộc với 'C-xC-e' (hoặc bất kỳ điều gì) theo mặc định. – chepner

+1

@chepner không ' v' làm điều này trong chế độ vi? – FDinoff

+0

Khi tôi chạy 'bind -p', nó được liệt kê là" không bị ràng buộc "(đối với bất kỳ sơ đồ bàn phím nào, mà tôi có thể nói), nhưng chắc chắn đủ,' v' không hoạt động. – chepner

1

Bash có thể bắt chước chế độ vim (mặc dù không phải là rất tốt) với:

set -o vi 
1

Bạn có thể chỉnh sửa các lệnh trước đó trong vi hoặc soạn thảo mặc định của bạn bằng cách sử dụng lệnh fc. Điều này bật mở một cửa sổ trình soạn thảo và khi bạn thoát nó thực hiện lệnh đã chỉnh sửa. Chế độ đó có thể được sử dụng nhiều lần để chỉnh sửa một lệnh phức tạp.