Làm cách nào để đặt màn hình bash thành không hiển thị văn bản vim sau khi thoát?


28

Câu hỏi của tôi rất đơn giản, nhưng tôi thấy thật khó để đóng khung / giải thích nó một cách dễ dàng.

Tôi đăng nhập vào một số hộp Unix với các tài khoản khác nhau. Tôi thấy 2 điều khác nhau cho user1user2, trong khi chỉnh sửa tệp văn bản trong vim

người dùng1

Khi tôi gõ vim filename, vim mở và tôi chỉnh sửa tệp. Khi tôi đóng nó, toàn bộ văn bản từ tệp sẽ biến mất và tôi thấy lệnh / đầu ra của Temals đã có trước đó.

người dùng2

Khi tôi gõ vim filename, vim mở và tôi chỉnh sửa tệp. Khi tôi đóng nó, một phần của tệp có trên màn hình khi tôi vimvẫn hiển thị ở màn hình và tất cả màn hình Terminal trước đó sẽ được cuộn lên. Ngay cả khi tệp chỉ là 1 dòng, sau khi thoát vim, màn hình sẽ hiển thị dòng đầu tiên, với phần còn lại ~và tôi thấy dấu nhắc lệnh ở cuối màn hình.

Chi tiết

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Tôi đã so sánh các vimrctệp cho cả người dùng và tôi biết tất cả các cài đặt và không tìm thấy bất kỳ cài đặt / cấu hình nào liên quan đến hành vi này.

Là hành vi này liên quan đến cấu hình shell? Làm cách nào để đặt các thứ, để tôi có được hành vi như trong user1kịch bản?

Tôi không thể mô tả điều này một cách dễ dàng, cũng khó tìm thấy google, vì tôi không biết từ khóa nào để tìm kiếm hành vi như vậy. Hãy cho tôi biết, nếu tôi nên giải thích thêm.


user1user2tài khoản trên cùng một máy hoặc khác nhau?
jasonwryan

@jasonwryan Đăng nhập trên cùng một máy cũng hiển thị cùng một kịch bản. @ warl0ck Cảm ơn vì điều đó.
mtk

1
Nếu bạn muốn buộc hành vi này nhưng giữ lại loại thiết bị đầu cuối của mình, hãy thêm một dòng vào .bashrc hoặc .profile nói bí danh vi = "/ usr / bin / vi $ *; xóa"
Criggie

Câu trả lời:


24

Một trong những lý do cho hành vi đó sẽ là cài đặt thiết bị đầu cuối cho mỗi người dùng.

Ví dụ:

  • User1 đang sử dụng TERM = xterm , trong trường hợp này khi bạn thoát vim, nó sẽ xóa thiết bị đầu cuối.
  • User2 đang sử dụng TERM = vt100 , trong trường hợp này khi bạn thoát vim, nó sẽ không xóa thiết bị đầu cuối.

Kiểm tra xem terminal1 đang sử dụng với echo $TERMthiết bị nào và đặt tương tự cho user2. cho bash:

HẠN = xterm; xuất hạn


+1 Giải pháp chính xác / hoàn hảo. Cảm ơn !!! Không nghĩ rằng nó dễ dàng. Bạn có thể vui lòng giải thích về những gì a TERM? hoặc trỏ đến một số liên kết tài nguyên? Tôi cần hiểu điều này. Điều này chỉ ảnh hưởng khi chúng ta kết nối qua putty?
mtk

Bạn có thể chỉ định cài đặt thiết bị đầu cuối vào phiên putty, nhưng người dùng có thể chỉ định cài đặt trên các biến môi trường của họ. TERM sẽ xác định loại thiết bị đầu cuối của bạn và một số tính năng sẽ có nhiều tính năng khác, ví dụ, xterm hỗ trợ màu sắc và nó sẽ tự động cập nhật các hàng và cột. Nếu bạn sử dụng vt100, nó sẽ mặc định là 24 hàng theo 80 cột khi bạn thay đổi kích thước thiết bị đầu cuối của mình, bạn sẽ thấy rằng nó dính vào 24x80. Kiểm tra unix.stackexchange.com/questions/43945/ này , nó có thể giải thích tốt hơn tôi.
BitsOfNix

Đó là hành vi của thiết bị đầu cuối, không phải là vỏ. Các thiết lập trình mô phỏng đầu cuối giống như bất kỳ công cụ nào bạn sử dụng để kết nối. Sự khác biệt được giải thích chi tiết tại đây: unix.stackexchange.com/questions/4126/ Khăn
Leonid

@Leonid, không chính xác, nếu bạn sử dụng putty, bạn có thể xác định và nó sẽ cập nhật khi kết nối nếu người dùng không xác định TATE. Nếu người dùng đã xác định thì bạn đã đúng, không quan trọng công cụ nào sẽ chiếm ưu thế trong cài đặt trên môi trường người dùng.
BitsOfNix

Chỉ cần một lưu ý về giải pháp này: YMMV. Nó không phải luôn luôn là "xterm". Sử dụng dwm (Trình quản lý cửa sổ động) với dmenu trên FreeBSD 10 Tôi đã phải giả mạo thiết bị đầu cuối bằng cách sử dụng "rxvt" để lấy kịch bản 1. Bạn cũng có thể bỏ qua cài đặt thuật ngữ bằng cách thêm "set term = rxvt" vào tệp ~ / .vimrc của bạn .
Ryder

18

Hành vi như vậy là điều duy nhất khiến tôi không sử dụng screen. Nó sử dụng thiết bị đầu cuối "màn hình" và thay đổi nó thành "xterm" không giúp được gì.

Thêm altscreen ontùy chọn trong ~ / .screenrc đã giải quyết nó. Từ hướng dẫn sử dụng màn hình:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.

@Fox OP không đề cập bất cứ điều gì về TERM anh ấy đang sử dụng, vì vậy đây có thể chỉ là câu trả lời thay thế. Dù sao trang này cũng ở trên cùng trong khi googling cho vấn đề màn hình quá.
BartBiczBoży

2
Điều này đã lừa Từ khóa: "vim bỏ lá thiết bị đầu cuối tạo tác trực quan"
Jay Taylor

0

Tôi đã thử tất cả các tùy chọn này nhưng kết quả không như tôi mong đợi. !clearsẽ xóa toàn bộ màn hình và không để lại các lệnh bash trước đó.

Giải pháp đơn giản và chính xác là đặt chuỗi loại xtermthiết bị đầu cuối và tốc độ thiết bị đầu cuối 38400,38400bên dưới Chi tiết thiết bị đầu cuối trong cài đặt putty trong Kết nối-> Dữ liệu.

Lưu các cài đặt và bạn tốt để đ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.