2013-08-07 37 views
21

Tôi đang sử dụng Cygwin 1.7.22 (32 bit) trên Windows 8 (64 bit). Trong Cygwin, tôi đang sử dụng Vim 7.3.1152, là phiên bản mặc định.Làm thế nào để tắt chế độ 'vi tương thích' cho Vim trong Cygwin trên Windows 8?

Hành vi mà dường như những con rệp:

  1. Khi tôi bấm tôi để vào chế độ chèn, nó không nói -- INSERT -- ở phía dưới bên trái. Trong thực tế, nó không nói bất cứ điều gì. Nó hoạt động đúng, mặc dù.

  2. Khi tôi xóa các chữ cái bằng cách sử dụng Backspace ở chế độ chèn, các chữ cái không biến mất nhưng con trỏ di chuyển sang trái.

  3. Khi tôi sử dụng các phím mũi tên ở chế độ chèn, nó nhập các chữ A, B, C và D, thay vì di chuyển con trỏ. Các phím mũi tên hoạt động bình thường bên ngoài chế độ chèn.

Làm cách nào để làm cho Vim hoạt động như tôi mong đợi?

+0

Tại sao mọi người lại downvote câu hỏi của tôi? Có gì sai với câu hỏi của tôi không? Tôi cần phản hồi để cải thiện. – SerMetAla

+0

Tôi đã bỏ phiếu. Những gì bạn cho là lỗi không phải là lỗi nhưng hành vi mong đợi. Bạn cũng không có câu hỏi. – FDinoff

+0

Bạn cũng đã thử câu trả lời của tôi? Vấn đề của bạn có biến mất không? – FDinoff

Trả lời

21

Tạo một file ~/.vimrc với những nội dung sau đây để đặt vim trong chế độ nocompatible (trên thực tế chỉ là sự hiện diện của các tập tin là đủ.)

set nocompatible 

Các hành vi bạn đang nhìn thấy là cách vi sử dụng để hành xử. Đây không phải là lỗi.

Hãy xem :h nocompatible


Trong vim chế độ tương thích cố gắng bắt chước vi càng sát càng tốt.

  1. --insert-- không phải là một phần của vi để nó không được hiển thị ở chế độ tương thích.
  2. Tôi tin rằng vi đã vẽ lại màn hình và không cập nhật cho đến khi bạn thoát trở lại chế độ bình thường. Ngoài ra backspace chỉ có thể sử dụng được cũng chỉ hoạt động trên nội dung được nhập trong chế độ chèn hiện tại. Nhìn chung nó không thân thiện với người dùng.
  3. Các phím mũi tên được gửi đến vim dưới dạng chuỗi thoát (thoát theo sau là một cặp chữ cái). Hãy để ^[ thoát. ^[OA là trên máy tính của tôi có thể là một cái gì đó tương tự như của bạn. vim thấy điều này như là một lối thoát (quay trở lại chế độ bình thường), và O (thêm một dòng trên dòng điện) và A là chữ A mà bạn nhìn thấy được nhập vào màn hình của bạn. Điều này chỉ có nghĩa là vim trong chế độ tương thích không giải thích các ký tự thoát đúng cách. Rất có thể vì vi không giải thích chúng (cũng không được thiết kế để sử dụng chúng).

set nocompatible sửa chữa vấn đề 1 và 3.

Tôi nghĩ set backspace=indent,eol,start nên khắc phục vấn đề 2.

+0

Cảm ơn bạn. Đề xuất này khắc phục sự cố 1 và 3 nhưng vẫn gặp sự cố 2. Cụ thể là khi tôi xóa, các chữ cái đã xóa sẽ không biến mất khỏi màn hình. Màn hình không sơn lại. Một công việc xung quanh là để thoát ra và sau đó nhập lại chế độ chèn, mà buộc một màn hình repaint. Đó là một công việc có thể sử dụng được, nhưng nó vẫn chưa hoàn hảo. – SerMetAla

+1

@SerMetAla Thử thêm 'set backspace = indent, eol, start' vào tập tin vimrc – FDinoff

+0

thiết lập không tương thích thực sự là không cần thiết vì nó được ngầm thiết lập khi threre là ~/.vimrc nhưng nó không bị tổn thương và có thể hữu ích trong một số tình huống. – romainl

3

này được hỏi vài tháng trước đây, nhưng tôi trả lời để tham khảo trong tương lai cho bất kỳ ai khác gặp vấn đề này.

Tôi vừa bị vấn đề này cắn.Tất cả các lời khuyên được liệt kê trong bài viết này, và trong các bài viết khác trên diễn đàn này (chưa kể bài viết trên các diễn đàn khác) không hoạt động, ít nhất là đối với một số người trong chúng ta. Cuối cùng tôi đã tìm ra vấn đề thực sự.

vim trên cygwin, vì lý do nào đó (ít nhất đây là trường hợp của tôi) không sử dụng .vimrc bạn đưa vào thư mục của mình. Giả sử bạn sao chép một ví dụ vào thư mục làm việc của bạn hoặc sao chép một số .vimrc từ trực tuyến. Hoặc có thể bạn tạo một cái mới từ đầu, và đặt tất cả các thiết lập những người tốt ở đây và nơi khác đề nghị (thiết lập backspace = blahblah, thiết lập không tương thích, thiết lập này, thiết lập đó). Nó không hoạt động. Tại sao? Bởi vì vì lý do gì (ít nhất là trong trường hợp của tôi) vim không nhìn vào .vimrc bạn vừa tạo ra.

Giải pháp là để buộc vim để sử dụng một vimrc Đặc biệt, bằng cách thông qua trong -u trên dòng lệnh như sau:

vim -u [/INSERT/PATH/TO/.vimrc] 

Đối với tình yêu của tất cả những gì thánh thiện, KHÔNG gõ dấu ngoặc vuông hoặc từ "/INSERT/PATH/TO/.vimrc" nguyên văn. Hãy sử dụng bộ não của bạn.

Dù sao, điều này giải quyết được vấn đề của tôi và tôi đã có thể sử dụng ví dụ mặc định .vimrc và xóa hành vi xóa và xóa lùi thích hợp khi ở chế độ chèn, chưa kể đến các tính năng khác.

Bạn có thể muốn bí danh lệnh vim trong .bashrc của bạn như thế này:

alias vim='vim -u [/INSERT/PATH/TO/.vimrc]' 
+0

Bạn đã đặt .vimrc ở đâu? Đường dẫn phải là '~/.vimrc'.Nếu nó không hoạt động, hãy kiểm tra đầu ra của 'vim --version' và tìm dòng bắt đầu bằng vimrc của người dùng (hoặc tìm nó ngay lập tức với' vim --version | grep 'user vimrc''). Dòng này sẽ cho bạn biết nơi vim đang tìm vimrc. Nhiều khả năng bạn không đặt vimrc vào đúng chỗ. – FDinoff

+0

OMG cảm ơn bạn. Tôi đang sử dụng Cygwin trên windows 8 và vim --version cho thấy nó đang tìm kiếm $ HOME/.virc. Di chuyển của tôi .vimrc để. Virc làm cho nó hoạt động. – yic

Các vấn đề liên quan