Tôi đang sử dụng dấu nhắc bash Cygwin và đối với các lệnh dài, văn bản sẽ bao quanh trên cùng một dòng thay vì đi đến dòng tiếp theo mặc dù đặt PS1 của tôi chỉ đơn giản là '$'.
Đây là một ảnh chụp màn hình,
Tôi đang sử dụng dấu nhắc bash Cygwin và đối với các lệnh dài, văn bản sẽ bao quanh trên cùng một dòng thay vì đi đến dòng tiếp theo mặc dù đặt PS1 của tôi chỉ đơn giản là '$'.
Đây là một ảnh chụp màn hình,
Câu trả lời:
Tôi đã sử dụng MinTTY và việc xóa dòng mới trong PS1 cũng không giúp được gì. Một lời khuyên trên trang này đã giúp. Tôi đã thực hiện lệnh bash này:
kill -WINCH $$
Trong trường hợp của tôi, việc chạy này một lần đã khắc phục sự cố, ngay cả sau khi đăng xuất và đăng nhập lại. Tôi không chắc liệu đây có phải là trường hợp không.
-WINCH
, điều này báo hiệu quá trình bash rằng cửa sổ đầu cuối đã được thay đổi kích thước. Vì vậy, điều này nên được thực hiện sau khi thay đổi kích thước cửa sổ thiết bị đầu cuối, tôi đoán.
Đối với tôi, giải pháp là thêm các dòng sau vào .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Lưu ý rằng các ký tự không thể in được trong cửa sổ phải được đặt trong
\[
... \]
.
Tôi cũng gặp vấn đề tương tự với MinTTY. Vấn đề có thể có liên quan đến dấu nhắc chính (PS1).
Giải pháp cho tôi là xóa ký tự 'dòng mới' cuối cùng khỏi PS1 (ngay trước dấu '$'):
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
xem http://cygwin.com/ml/cygwin/2001-07/msg00140.html để tham khảo.
Để thực hiện thay đổi này liên tục, hãy thêm xuất PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $ 'vào tệp ~ / .bashrc của bạn.
Câu trả lời của @ jtpereyda chắc chắn là đúng. Nhưng vì lý do nào đó tôi không thể để điều này xảy ra, và đào sâu hơn một chút.
Mở rộng trên nhận xét này , nếu bạn thay đổi kích thước thiết bị đầu cuối trong khi ở vim (hoặc bất kỳ ứng dụng toàn màn hình nào khác kiểm soát tty khỏi vỏ), kết quả SIGWINCH
thường không được gửi đến trình bao, vì vậy khi nó được điều khiển trở lại 't biết rằng thiết bị đầu cuối đã được thay đổi kích thước.
Khi bạn thay đổi kích thước thiết bị đầu cuối của mình, nó sẽ gọi một ioctl(..., TIOCSWINSZ, ...)
pty chính mà vim đang chạy. Điều này lần lượt dẫn đến một killpg(SIGWINCH)
nhóm quy trình của vim.
Vấn đề là vim chạy trong nhóm quy trình riêng của nó khác với shell mà nó được thực thi, vì vậy shell bash không nhận được SIGWINCH
và không điều chỉnh các dòng / cột của nó một cách thích hợp.
Nếu bạn muốn một cách giải quyết lâu dài, hãy thêm shopt -s checkwinsize
vào của bạn .bashrc
. Điều đó làm cho bash kiểm tra kích thước cửa sổ ( ioctl(..., TIOCGWINSZ, ..)
) sau khi trở về từ mỗi lệnh và cập nhật các dòng / cột của nó.
Một cái gì đó bị hỏng trong cài đặt thiết bị đầu cuối của bạn (có thể).
Tôi đoán bạn đã thử thoát phiên đó và khởi động lại phiên mới.
Mặc dù bạn không nhận được giải pháp cho thiết bị đầu cuối Cygwin, hãy dùng thử MinTTY (nó thực sự tốt hơn).
Theo nhận xét của akatakritos , có lẽ bạn đã thay đổi kích thước thiết bị đầu cuối của mình trong khi vim đã mở.
Khi điều này xảy ra, chỉ cần thay đổi kích thước thiết bị đầu cuối một lần nữa và vấn đề sẽ biến mất.
TERM
biến môi trường thiết lập để? Đối với bảng điều khiển Cygwin, nó nên đượccygwin
.