Tạo khác biệt Sử dụng Full Terminal Width ở chế độ Side-by-Side


40

Hầu hết các ứng dụng đều thông minh về việc sử dụng toàn bộ chiều rộng của thiết bị đầu cuối có sẵn cho chúng. Shell của tôi không, màn hình, vim, v.v. Tuy nhiên, diffở chế độ song song ( -y), thì không. Điều này làm tôi tức giận. Nó sử dụng chiều rộng 126 ký tự, thậm chí không bằng một nửa thiết bị đầu cuối chiều rộng 270 khối của tôi.

Nhìn qua trang man không tiết lộ bất cứ điều gì cụ thể về việc tự động điều chỉnh độ rộng, chỉ xác định thủ công thông qua nó -W.

Có lẽ có một "tính năng ẩn" diffđể cho phép nó tự động mở rộng đến toàn bộ chiều rộng của thiết bị đầu cuối? Hoặc là; Con đường dễ nhất để tự động chèn -W <terminalsize>vào lệnh diff của tôi bất cứ khi nào tôi chạy nó là gì?

Tôi theo giả định rằng tự động gắn thêm -W vào mọi thứ không thể làm tổn thương bất cứ điều gì, bởi vì nó sẽ chỉ có nghĩa là "sử dụng cột $ x", đó luôn là điều tôi muốn, cho dù tôi đang ở chế độ phụ, hay nói cách khác.

Câu trả lời:


51
$ alias diff='diff -W $(( $(tput cols) - 2 ))'

phải làm điều đó Bạn cũng sẽ muốn thêm nó vào ~ / .bashrc.

Chủ - 2yếu là hoang tưởng, trong trường hợp một cái gì đó (nhúng Unicode có độ rộng gấp đôi?) Mở rộng đủ để tạo ra đường bao; nếu bạn muốn, bạn chỉ có thể sử dụng

$ alias diff='diff -W $(tput cols)'

Tôi bắt đầu chú ý đến $ COLUMNS và đang suy nghĩ điều gì đó dọc theo cùng một dòng. bí danh diff = "diff -W $ {COLUMNS}". Tôi nghĩ rằng tôi muốn hỏi vỏ hơn là dựa vào môi trường.
VxJasonxV

1
tputxem xét $COLUMNS, stty -avà mô tả thiết bị đầu cuối, sử dụng cái đầu tiên có giá trị có ý nghĩa. eval $(resize)có thể được sử dụng để buộc chúng phải đồng bộ với kích thước của thiết bị đầu cuối.
geekizard

lưu ý rằng nếu bạn có các tabstop không chuẩn (ví dụ: tabs 2trong .bashrc của bạn), bạn cũng sẽ cần sử dụng cờ -t hoặc diff sẽ tạo ra đầu ra rất kỳ quái
Jeff
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.