Vim bình thường và con trỏ chế độ chèn không thay đổi trong màn hình GNU


9

Tôi sử dụng vim trong một vài bối cảnh khác nhau; thông thường, tôi muốn đặt cái này trong .vimrc:

let &t_ti.="\<Esc>[1 q"
let &t_SI.="\<Esc>[5 q"
let &t_EI.="\<Esc>[1 q"
let &t_te.="\<Esc>[0 q"

Điều này làm cho nó để chế độ chèn và chế độ bình thường sử dụng các con trỏ khác nhau (chế độ bình thường là con trỏ khối và chế độ chèn là một đường thẳng đứng). Điều này làm việc cho tôi trong mintty với cygwin, xterm, và rvxt cũng tốt. Tuy nhiên, bất cứ khi nào tôi sử dụng màn hình GNU, con trỏ của tôi không còn thay đổi. Tôi đã thấy các tài liệu tham khảo để sửa lỗi này cho tmux (ví dụ ở đây: Hình dạng con trỏ dưới vim + tmux ), nhưng không có gì tôi đã thử cho Màn hình đã hoạt động. Hiện tại, tôi đang sử dụng điều này trong .vimrc:

"Underline currently edited line
if !has("gui_running")
    :autocmd InsertEnter * set cul
    :autocmd InsertLeave * set nocul
endif

Điều đó làm cho nó sao cho khi ở chế độ chèn, dòng hiện tại được gạch chân ( :has("gui_running")ngăn không cho nó có hiệu lực trong gvim). Tôi cũng sử dụng set laststatus=2để giữ thanh trạng thái ở phía dưới, điều này cũng có ích. Tôi chỉ muốn nó làm việc nhiều hơn một chút như gvim. Đã ai tìm ra cách sửa cái này chưa?


Có vẻ như tôi không thể tự di chuyển nó tại đại diện n00b của mình ( meta.stackexchange.com/questions/85017/ mẹo ), nhưng tôi hoàn toàn tin tưởng vào việc nó đã được di chuyển đó!)
ZeroG

Câu trả lời:


4

Tôi nghĩ rằng tôi đã tìm ra nó, mặc dù tôi không hoàn toàn hiểu cách khắc phục. Điều này dường như hoạt động cho mintty, xterm và rxvt:

" Set up vertical vs block cursor for insert/normal mode
if &term =~ "screen."
    let &t_ti.="\eP\e[1 q\e\\"
    let &t_SI.="\eP\e[5 q\e\\"
    let &t_EI.="\eP\e[1 q\e\\"
    let &t_te.="\eP\e[0 q\e\\"
else
    let &t_ti.="\<Esc>[1 q"
    let &t_SI.="\<Esc>[5 q"
    let &t_EI.="\<Esc>[1 q"
    let &t_te.="\<Esc>[0 q"
endif

Điều này dựa trên screenrc của bạn có cái gì đó như "hạn màn hình" hoặc "hạn màn hình-256 màu" để tệp vimrc có thể xác định bạn đang bật thiết bị đầu cuối nào. Thiết bị đầu cuối duy nhất còn lại tôi sử dụng thường xuyên khi điều này không hoạt động là PuTTY, nhưng tôi nghĩ nó thực sự không hỗ trợ các lệnh thiết bị đầu cuối để thay đổi hình dạng con trỏ. Mintty đã được rẽ nhánh từ PuTTY một thời gian trước và tôi đã thấy ở đây ( https://www.cygwin.com/ml/cygwin-announce/2009-07/msg00011.html ) rằng hỗ trợ của DECSCUSR đã được thêm vào sau khi ngã ba đó.

Điều này là đủ tốt cho tôi - nếu tôi đang tham gia vào một cỗ máy mà tôi thực sự muốn con trỏ khối của mình trong Vim, tôi đoán tôi có thể hoặc cygwin / ssh hoặc PuTTY / XMing / rxvt theo cách của tôi thay vì PuTTY.


2
Đối với tôi, echo &termkết quả đầu ra screenvì vậy tôi đã thay đổi regexp trong dòng bắt đầu if &term ...đến screen.*.
Kenny Evitt

1
@KennyEvitt tương tự với tôi trên MacOS. Nắm bắt tốt!
Ivan Temigan
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.