Các phím mũi tên vi Linux bị hỏng trong chế độ chèn


95

Các phím mũi tên của tôi không hoạt động trong vi ở chế độ chèn ở nhà, chúng chỉ chèn một dòng mới và một chữ cái viết hoa, như 'A'. Có cách nào để khắc phục điều đó không?


3
Ý tôi là phân phối linux?
Miquel

Họ đi làm ăn xa? :-)
Brian Agnew

4
Rõ ràng, giải pháp là emacs. Chắc chắn.
Paul Nathan

38
@Paul Nathan - Nếu giải pháp là emacs, thì tôi không muốn biết vấn đề là gì.
Chà. Owens

Câu trả lời:


107

Tôi cho rằng bạn đang sử dụng vim vì nó được gắn thẻ là Linux. Thử:

:set nocompatible

(Bạn có thể muốn định cấu hình .vimrc của mình bằng cách thêm lệnh này vào nó. Tạo tệp .vimrc mới nếu chưa có trong thư mục chính của bạn, hãy chạy echo $HOMEđể kiểm tra đường dẫn thư mục chính.)


7
Hãy chắc chắn rằng bạn bắt đầu vi bằng lệnh vimvà không vi. Hầu hết các tính năng nâng cao và hữu ích của vimđều bị tắt theo mặc định trừ khi bạn khởi động nó bằng vim.
pts

1
@pts - chỉ trên hệ thống bị hỏng. Bắt đầu vim as vi trên tất cả các hộp của tôi hoạt động tốt; tuy nhiên, có một số hộp CentOS mà tôi đã sử dụng thể hiện hành vi mà bạn đang nói đến.
Chà. Owens

Ai đó có thể chỉnh sửa câu trả lời này để bao gồm nó trông như thế nào trong vimrc không?
Stephan

1
@Stephan Thêm set nocompatibletrên một dòng riêng trong vimrc
Matthew Wilcoxson

Trên Ubuntu, tôi đã giải quyết vấn đề này bằng cách chỉ cần cài đặt vim (sudo apt install vim) từ thời điểm đó trên vim hoạt động tốt với các phím mũi tên ở chế độ chèn. Chỉnh sửa: Tôi thấy bây giờ điều này đã được Han đề cập ở dưới đây.
pizzamonster

74

Ubuntu được cung cấp theo mặc định vim-tiny, không có tất cả các chuông và còi mà vim có.

Làm nhanh sudo apt-get install vimđể nhận được tất cả các tính năng hấp dẫn mà mọi người đang nói về.


1
Đây chính xác là những gì tôi cần trong linux bạc hà. Bằng cách cài đặt vim, tôi vẫn có thể bắt đầu sử dụng "vi" và tất cả tính năng đánh dấu mã hiện đã được bật. Thật là một phần kiến ​​thức tuyệt vời về linux :)
wired00

1
Điều này đã làm việc cho Raspberry Pi (Jessie Lite) của tôi. Tôi đã gặp phải sự cố này khi tôi bảo mật trình bao vào nó, nhưng bây giờ nó đã được giải quyết hoàn toàn :-)
JakeD

35

:set term=builtin_ansi

đã sửa nó cho tôi. Bạn có thể dán nó vào vim khi đang ở chế độ thoát, (chế độ bleep) hoặc thêm nó vào cuối ~ / .vimrc mà không có ":" ở đầu


: set term = xterm cũng có thể hoạt động (và dễ nhớ hơn).
Alexx Roche

FYI :set term=builtin_ansiđã làm việc cho tôi. :set term=xtermđã không.
FractalSpace

trên một hộp Linux của tôi, tôi sử dụng export TERM=xtermtrên dòng lệnh trước khi gọi vi và sau đó :set term=xtermtrong vim 7.2 công trình đối với tôi
Alexx Roche

Hoạt động hoàn hảo! Cảm ơn bạn!
Akhmedzianov Danilian

Điều này hoạt động để kích hoạt điều hướng phím mũi tên nhưng nó hoàn toàn giết chết tất cả mã màu trong thiết bị đầu cuối.
Ken Ingram

16

vi không hỗ trợ các phím mũi tên trong chế độ chèn. Sử dụng vim. Mặc dù vi của bạn có thể chỉ là một liên kết đến vim, nó có thể được cấu hình để hoạt động giống như vi "gốc" và do đó vô hiệu hóa các phím mũi tên. Chỉ cần gọi trực tiếp vim.


Mặc dù đây không phải là một giải pháp, nhưng nó là cách giải thích tốt nhất cho hành vi (imo), làm rõ sự khác biệt giữa vivim. Nhưng trên hộp của tôi có vimin command not found: D
Daniel W.

@DanFromGermany Có thể bạn chỉ cài đặt vi chứ không phải vim. Vui lòng thử cài đặt vim thông qua trình quản lý gói của hệ thống Linux nếu bạn muốn sử dụng.
lothar

:set term=ansiđã làm việc cho tôi cảm ơn Raz . bạn nói nó 'không hỗ trợ'. Tôi tự hỏi bạn nói rằng vì vim-tinygói ubuntu mà tôi đang sử dụng- khác với vani vihay cài đặt thuật ngữ cũng hoạt động trong đó?
n611x007

8

Tuy nhiên, một biến thể khác: vấn đề này xuất hiện đối với tôi sau một số thay đổi .vimrc. Một cuộc tìm kiếm phối hợp cuối cùng tiết lộ rằng việc lập lại bản đồ thông minh của tôi về ESC ở chế độ bình thường không phải là một ý kiến ​​hay. Xóa nó đã giải quyết được vấn đề:

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc

Tôi đã thử mọi thứ sau khi gặp sự cố này và đây là những gì tôi đang tìm kiếm, cảm ơn!
Dan Bartlett

Cảm ơn vì đã sửa chữa, tôi đã tìm khắp mọi nơi. Bất kỳ ý tưởng tại sao ánh xạ lại thoát gây ra vấn đề?
nonphoto,

6

Điều duy nhất phù hợp với tôi là ": set term = ansi"


1
Điều này dường như cũng đã hiệu quả với tôi khi sử dụng vùng chứa Docker.
ohlando

1
Cái này cũng làm việc cho tôi. Tôi đang sử dụng cmd.exe trong windows và chuyển sang ubuntu bằng cách sử dụng vagrant
codelogn

@ CodeCodeO-1-O-log-n vậy bạn đang sử dụng vibên nào trên windows hay bên ubuntu? :)
n611x007

Trên windows, tôi chạy cmd.exe và sau đó vagrant ssh vào máy chủ ubuntu và sau đó vi vào máy chủ. Nhưng sau này tôi bắt đầu sử dụng Putty và tôi không cần phải làm điều đó nữa và Putty đang làm việc rất tốt cho tôi.
codelogn

2

Tôi đã gặp vấn đề tương tự với các phím mũi tên, nhưng khi tôi sử dụng đã đặt nocp hoặc không tương thích thì phím xóa lùi của tôi không hoạt động chính xác

vì một số lý do khi tôi cài đặt vim với sudo apt-get install vim, vi không gặp bất kỳ sự cố nào với các mũi tên hoặc phím xóa lùi nữa


1

Tôi vừa gặp sự cố với các phím mũi tên sau khi chuyển sang sử dụng git trong .vim.

Tôi đã cài đặt repo này - https://github.com/sunaku/.vim

và sau khi tìm hiểu trong một giờ, tôi thấy rằng plugin AutoClose (mà tôi không thích) đã làm hỏng các phím mũi tên.

Tài liệu plugin gợi ý rằng người ta nên đặt set ttimeoutlen = 100, nhưng điều đó không hiệu quả với tôi! (sử dụng urxvt + screen hoặc urxvt và thậm chí cả xterm)

Vì vậy, tôi đã gỡ bỏ plugin ở cuối.


0

Bạn cũng có thể muốn thử 'noesckeys'


0

Tôi đã gặp vấn đề tương tự khi sử dụng vim bên trong Windows 8.1 với Cygwin.

Giải pháp phù hợp với tôi là chỉ cần chạy lệnh sau trong thiết bị đầu cuối Cygwin của bạn:

cp vimrc_example.vim ~/.vimrc

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.