Chọn văn bản trong thiết bị đầu cuối mà không cần sử dụng chuột


68

Tôi chuẩn bị nhấn enter để chạy lệnh trong terminal, nhưng trước khi thực hiện điều đó, tôi muốn sao chép lệnh vào clipboard mà không cần sử dụng chuột.

Làm sao?

Nếu bạn ở đâu đó ngoài thiết bị đầu cuối, Ctrl+ Homesẽ làm điều đó.

Có cách nào tùy ý chọn văn bản như thế trong thiết bị đầu cuối không?

EDITED:

  • giả sử rằng sử dụng các chương trình khác như screenkhông phải là một thay thế tốt
  • văn bản sẽ được dán bên ngoài thiết bị đầu cuối, vì vậy Ctrl+ yvà các chuỗi tương tự cũng không giải quyết được

1
Ý bạn là Ctrl-Shift-Home?
Ốc cơ khí

Shift-Home sao chép đến đầu dòng. Ctrl-Shift-Home sao chép vào đầu trang.
Straakowsky

Shift-Home và Ctrl-Shift-Home cũng làm như vậy đối với tôi (chuyển sang cầu xin thiết bị đầu cuối) và dường như không ai trong số họ sao chép bất cứ điều gì bị vượt qua bởi cả Ctrl-Y hoặc Ctrl-Shift-V (cũng không chọn). Nhưng nó không hoạt động trong trình soạn thảo văn bản, không sao chép, chỉ cần chọn. Sử dụng OpenSUSE Leap 15 trong Hộp ảo. Tất cả các ràng buộc quan trọng khác được đề cập trong câu trả lời hoạt động.
Brambor

Câu trả lời:


16

Ràng buộc phím tắt sau:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Bây giờ sau khi sử dụng Crtl+ Pdòng của bạn sẽ được sao chép vào clipboard. Bạn có thể dán nó vào thiết bị đầu cuối bằng cách sử dụng:

xsel

Và vào bất kỳ ứng dụng X nào bằng nút chuột giữa hoặc Shift+ Insert.


tôi muốn tránh sử dụng chuột. Có thể dán nó bằng ctrl + shift + v thay vì nút chuột giữa không?
MrGigu

@MrGigu, cái này sử dụng một clipboard khác (xem tại đây ). Bạn cần sử dụng phím tắt khác. Theo mặc định, nó phải là Shift + Chèn (xem tại đây )
Nykakin

Oh cảm ơn, ca làm việc + chèn sẽ làm! không biết bạn có thể dán bằng lệnh này.
MrGigu

Có lời giải thích nào về những gì thực sự đang diễn ra ở đây không?
Alexander

Hoặc sử dụng xsel -bđể sử dụng bảng tạm tiêu chuẩn, tức là sử dụng Ctrl + V / Ctrl + Shift + V. Cũng đáng lưu ý rằng phương pháp này thất bại trên các lệnh nhiều dòng.
wjandrea

27

Nếu bạn đang sử dụng một trong các trình bao hiểu các khóa emacs (bash, csh, v.v.) thì bạn có thể sao chép lệnh hiện tại bằng cách:

  1. control-A sẽ đưa bạn đến đầu dòng.

  2. control-K sẽ giết toàn bộ dòng mà bạn vừa nhập.

  3. control-Y sẽ kéo lại văn bản.

Sau đó, bạn có thể control-Ykéo lại văn bản để chèn lại văn bản làm đầu vào cho trình soạn thảo dòng lệnh shell.

Xem man bashvà sau đó khi nó xuất hiện, nhập /emacstheo sau là một vài n(tiếp theo) để đưa bạn chuyển tiếp đến phần ĐỌC.


Tôi biết điều đó nhưng muốn dán bên ngoài thiết bị đầu cuối. Chỉnh sửa để làm rõ.
Straakowsky

3
control-Ucó thể cắt lệnh từ phần cuối của lệnh trực tiếp
vstepaniuk

1
Lệnh thứ 2 đã thay đổi cuộc đời tôi.
krishna

10

Cái gần nhất tôi có thể nghĩ là Ctrl+ u, Ctrl+ y
Cái này sẽ xóa từ con trỏ đến đầu dòng, sau đó dán từ bộ đệm readline. Điều này không hoàn toàn giống với bảng tạm, nhưng bạn sẽ có thể dán bên trong vỏ, nếu đó là thứ bạn cần.


Tôi biết điều đó nhưng muốn dán bên ngoài thiết bị đầu cuối. Chỉnh sửa để làm rõ.
Straakowsky

8

Có một chương trình gọi là màn hình. Nó tạo ra một hệ thống cửa sổ văn bản cho phép bạn chuyển đổi giữa nhiều trường hợp. Nhưng nó cũng cho phép bạn chọn văn bản.

sudo apt-get install screen

Lệnh đó sẽ cài đặt nó.

Sau đó gõ screen

Bạn sử dụng ctr-a để bắt đầu chuỗi lệnh. Sau đó nhấn esc và con trỏ của bạn sẽ di chuyển theo bất kỳ hướng nào. Nhấn Enter để bắt đầu lựa chọn văn bản, di chuyển đến điểm cuối, nhấn enter lần nữa. Điều đó sẽ sao chép vào bộ đệm.

Sau đó, ctr-a và sau đó} sẽ dán

Thêm chi tiết về các lệnh khác tại đây http://www.kuro5hin.org/story/2004/3/9/16838/14935


Đề xuất tốt, nhưng tôi không thích screenvì những lý do khác nhau, vì vậy hãy giả sử thiết bị đầu cuối Ubuntu thường xuyên. Chỉnh sửa câu hỏi của tôi để làm rõ.
Straakowsky

1
Điều này nên được đánh dấu là câu trả lời đúng IMHO.
eddiewould

2

Nếu bạn ở trong vim, bạn có thể chọn trực quan một hoặc nhiều dòng bằng Shift+ vvà sau đó sử dụng một ràng buộc, ví dụ yy, để chuyển lựa chọn sang xclip .

Thêm ràng buộc vào vimrc của bạn:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Điều này đòi hỏi xclip phải được cài đặt, nó nằm trong kho lưu trữ năng khiếu Debian / Ubuntu.

xcliplưu trữ stdin, với -selection clipboardtùy chọn nó cũng đẩy stdin vào bảng tạm hệ thống.

Vì vậy, bạn cũng có thể sử dụng xclipmột cách chung từ thiết bị đầu cuối, ví dụ để sao chép toàn bộ tệp vào bảng tạm hệ thống:

cat myfile | xclip -selection clipboard

Nếu bạn có thể tùy ý cũng tạo một bí danh, chẳng hạn như:

alias cb="xclip -selection clipboard" 

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.