Phím mũi tên tự động ngừng hoạt động trong vim


25

Gần đây tôi đã nâng cấp từ OS X 10.6 (tôi nghĩ) lên 10.9. Kể từ đó, dường như, trong khi chỉnh sửa vim, các phím mũi tên sẽ "tự động" ngừng hoạt động.

Tại một thời điểm, trong thất vọng, tôi đã "nghiền" một trong các phím mũi tên và cuối cùng bị lỗi "E388 không thể tìm thấy định nghĩa". Tất cả thời gian khác mà tôi đã trải qua nó, các mũi tên, sau khi làm việc cho một lúc, đột nhiên bắt đầu dinging vào tôi!

Thoát khỏi và mở lại giải quyết vấn đề tạm thời . Nhưng, tôi muốn ngăn chặn nó!

Bất cứ ai cũng biết điều này có thể là gì? Và làm thế nào để khắc phục nó?


Có vẻ như mặc định của tôi vimrcđã được sửa đổi trong quá trình cập nhật. Nếu bộ nhớ của tôi là chính xác, nó là một tập tin khá lớn trước đây. Bây giờ, nó chỉ chứa điều này:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Tôi không biết những lựa chọn này làm gì. Tôi sẽ xem xét nó - nhưng, hy vọng ai đó ở đây biết nhanh hơn tôi có thể google và đọc ...


Tôi cũng mới nhận ra có một diễn đàn tập trung vào Apple ở đây rằng câu hỏi này có thể phù hợp hơn. Vì vậy, nếu đây có nhiều khả năng là một điều kiện của OS X hơn vim, có lẽ một mod có thể di chuyển điều này cho tôi.
Svidgen

2
Nhắc nhở tôi làm việc trên một máy tính lớn "Prime" ở trường đại học. Giáo sư dạy rằng bạn không bao giờ nên sử dụng các phím mũi tên trong vi. Luôn luôn sử dụng hjkl. Đó là nơi mà các phím "mũi tên" sử dụng trên phần cứng cổ.
Dế đỏ

OK ... Nhưng, các phím mũi tên sẽ hoạt động. Bất kể giáo sư của bạn nghĩ rằng tôi nên sử dụng chúng. Và tôi thấy chúng thuận tiện vào những lúc Vì vậy, mong muốn được xem giải pháp.
Svidgen

1
Điều gì xảy ra khi bạn chèn khóa chữ vào bộ đệm? vào chế độ chèn và nhấn Ctrl + v, sau đó nhấn phím mũi tên. Vim trên máy Mac của tôi hiển thị phím mũi tên lên ^[OA, dưới ^[OB, phải ^[OC, và trái như ^[OD. kiểm tra trước và sau khi sự cố xuất hiện
Nathan Wallace

@NathanWallace không chắc chắn làm thế nào tôi bỏ qua câu hỏi của bạn. Tôi sẽ thử điều đó khi tôi ở máy Mac của tôi.
Svidgen

Câu trả lời:


24

Tìm thấy trong blog của James Hodgkinson , lệnh sau đây hoạt động với tôi. Lưu ý nó sẽ làm mới màn hình vim.

:!reset

Không chắc làm thế nào tôi bỏ qua câu trả lời này, nhưng nó có vẻ rất hứa hẹn!
Svidgen 17/03/2015

Trong thực tế ... Nhấn Ctrl + R như được mô tả trong bài viết sẽ tái tạo vấn đề một cách đầy đủ với ánh xạ phím mũi tên sai được ghi nhận trong phản hồi của tôi với Nathan ở trên. Và lệnh reset giải quyết nó trong trường hợp đó. .. Tôi không thể tái tạo vấn đề một cách đáng tin cậy bằng bất kỳ cách nào khác, vì vậy đây chắc chắn là câu trả lời hữu ích nhất!
Svidgen 17/03/2015

11

Tôi đã gặp vấn đề này một vài lần là tốt. Tôi tình cờ đang chạy màn hình GNU trên một máy tính khác mà tôi đã đăng nhập thông qua SSH. Để khắc phục sự cố, tôi đã tháo (các) màn hình của mình ( Ctrl- a d), đăng xuất khỏi máy, đăng nhập lại và gắn lại bằng cách sử dụng screen -x. Nó có thể hoạt động mà không cần đăng xuất khỏi máy, chỉ bằng cách tháo rời và gắn lại màn hình. Tôi không thể nhớ mặc dù.


Đóng phiên màn hình của tôi và khởi động lại nó đã sửa nó cho tôi.
Eno

1
đó là vấn đề đối với tôi Bằng cách nào đó screenđã ở trong trạng thái funk (qua kết nối ssh). Đóng thiết bị đầu cuối đó, sau đó ssh một lần nữa và screen -rdthực hiện các mẹo. Cảm ơn!
Pierre D

@PierreD đúng, tôi cũng đã gặp phải vấn đề này một vài lần - cũng trong một screenphiên, Detach & Reattach đã giải quyết vấn đề, cảm ơn!
stdcerr

6

Trong đường dẫn /usr/share/vim/tôi tìm thấy .vimrctệp ... Ở đó tôi đã thêm dòng

set term=ansi 

Nó làm việc cho tôi. Bây giờ các phím mũi tên đang hoạt động đúng trong trình soạn thảo Vim.


2
Điều này cũng đã sửa nó cho tôi, vì bản cập nhật Windows 10 WSL / Ubuntu mới nhất đã phá vỡ nó.
Cáo xám

3

Điều này nghe rất giống vấn đề của bạn. Bài viết có tiêu đề: Khóa con trỏ trong Vim: Bạn Mac'ing Me Crazy! .

đoạn trích

Vim rất hữu ích trong nhiều tình huống, đặc biệt là chỉnh sửa nhanh (đặc biệt là root) và chỉnh sửa tệp trên máy chủ từ xa. Một điều khó chịu tôi đã gặp phải trong chín tháng với Mac Book Pro là các phím con trỏ trong Vim rung chuông ở cả chế độ chèn hoặc lệnh thay vì thay đổi dòng. Nâng cấp lên phiên bản 7 thông qua MacPorts cũng cho kết quả tương tự. Các phím con trỏ hoạt động sau khi chuyển TATE của tôi sang VT220 từ rxvt! Nhược điểm là cú pháp tô sáng ngừng hoạt động.

May mắn thay, việc thêm VT220 vào các tham số tìm kiếm Google của tôi đã tạo ra một tham chiếu đến các phím con trỏ vt100 trong tài liệu Vim. Thêm mã sau vào tệp .vimrc của bạn để khắc phục sự cố:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

Trong một bài báo có một đề nghị thiết lập của bạn $TERMđể linuxthay trên OSX.

đoạn trích

Một giải pháp tốt hơn là thay đổi giá trị mặc định cho TERM thành linux hoặc dtterm vì giá trị TERM sẽ được chọn trên máy chủ từ xa. Trong thời đại ngày nay, tôi sẽ đặt cược hầu hết các máy chủ hỗ trợ cả hai loại thiết bị đầu cuối này.


Hmm ... tôi thậm chí còn bối rối hơn bây giờ. Tôi nghĩ rằng tôi có .vimrctập tin toàn cầu / mặc định . Những thứ này có bị di chuyển hay gỡ bỏ trong bản cập nhật OS X không?
Svidgen

@svidgen - Không, tôi không nghĩ rằng điều đó đã thay đổi, nhưng vấn đề này nghe có vẻ tương tự như của bạn và cách khắc phục đủ dễ để thử, vì vậy tôi nghĩ tôi sẽ chia sẻ nó với bạn. Ngẫu nhiên $TERMcó thể đã thay đổi về bạn.
slm

Whelp, đây chắc chắn là câu trả lời phù hợp nhất ở đây. +1 cho điều đó. Không chắc là nó có khắc phục được không, thật không may, vì tôi không thể tái tạo vấn đề một cách nhất quán.
Svidgen

Sau khi áp dụng sửa chữa này, vấn đề đã xảy ra một lần nữa. Vẫn là một câu trả lời có liên quan, để lại +1. Nhưng, vui lòng xem nhận xét của tôi ở trên nếu bạn muốn cung cấp câu trả lời bổ sung.
Svidgen

0

Chúc mừng bản cập nhật. Tôi đã tự cập nhật vào cuối tuần và đã xử lý một số vấn đề bàn phím kỳ quặc của riêng tôi.

Dưới đây là một vài điều tôi cần phải:

  • Gỡ bỏ phần mềm chơi game Logitech cũ và nâng cấp. Trước khi làm điều này, tôi đã gặp vấn đề khi sử dụng niềng răng vuông và xoăn. Các khóa đặc biệt thường gửi esc- [trình tự trong ngữ cảnh VIM để điều này có thể có liên quan.
  • Đi vào System Prefs: Security and Privacy: Privacy: Access và kích hoạt một vài ứng dụng (synergy_server và phần mềm chơi game Logitech). Trước khi có sự thay đổi này, tôi không thể điều khiển các máy tính khác của mình bằng sức mạnh tổng hợp hoặc sử dụng macro với G11. Tôi nghi ngờ đây là kết nối trực tiếp cho bạn nhưng các tùy chọn Trợ năng là mới và có thể áp dụng cho một số ứng dụng khác của bạn.

0

Nếu bạn đang làm việc trong .sqlcác tệp trong vim(bạn không đề cập), điều này có thể giúp bạn. Tôi chỉ giải quyết việc này vào ngày khác.

Trong tập tin ~/.vimrc

let g:omni_sql_no_default_maps = 1

vấn đề đặc biệt này được thảo luận ở đây

Nếu bạn không gặp vấn đề này với .sqlcác tệp trong vimđó thì tôi xin lỗi, suy nghĩ duy nhất của tôi là xác minh ánh xạ bên trong vimkhi sự cố xảy ra.

:map Ctrl V → khi bạn mất khả năng sử dụng mũi tên của mình, hãy thực hiện lệnh đó và xem liệu ánh xạ có biến mất không. nếu có, điều này cho bạn một nơi để bắt đầu đào sâu vào.


0

Tôi đã gặp vấn đề này trong một phiên SSH và đã giải quyết nó bằng cách đăng xuất rồi quay lại lần nữa:

exit
ssh ...

Cảm ơn bạn đã cân nhắc. Câu trả lời được chọn đã liên tục làm việc cho tôi. Bạn đã thử chưa?
Svidgen

Có, giải pháp được chấp nhận không hoạt động trên Ubuntu 18. Tôi thậm chí đã gỡ cài đặt và cài đặt lại vim (trong cùng một phiên ssh) và không có xúc xắc. Chỉ đăng xuất rồi quay lại chức năng mũi tên được khôi phục.
duhaime

0

Tôi gặp vấn đề này khi tôi sử dụng "biến môi trường hệ thống" trong Windows, cài đặt TERMthành xterm-256color. Vấn đề đã biến mất (và tôi vimtrở lại bình thường) khi tôi xóa biến đó một lần nữa.

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.