lỗi: Có vấn đề với trình soạn thảo 'vi' khi sử dụng nó với git


12

Tôi có vấn đề kỳ lạ này với việc sử dụng vinhư là trình soạn thảo cho git commit -a.

Luồng thông thường là: Tôi nhập git commit -a, vixuất hiện, tôi nhập thông điệp cam kết của mình và sau đó :wqđể lưu và thoát khỏi vi.

Điều này hoạt động tốt. Tuy nhiên, đôi khi tôi mắc lỗi đánh máy và thay vì :wqtôi gõ :Wq(vì tôi sử dụng shift cho :). Sau đó, khi tôi tự sửa và gõ :wqlại, gitsẽ đưa ra lỗi sau:

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

Làm thế nào tôi có thể sửa lỗi này?


Phiên bản nào gitvi? Tôi không thể repro điều này với vim 7.3, phiên bản git 1.7.11.1.
Christopher

@Christopher: vi 7.3và git 1.7.9.6 (Apple Git-31.1), những cái mặc định trên Mountain Lion afaik
houbysoft

Câu trả lời:


14

vitồn tại với trạng thái khác không, mặc dù không có thêm chi tiết về thiết lập của bạn, thật khó để biết tại sao. Nếu bạn đang sử dụng nhiều plugin vim, bạn có thể thử di chuyển .vimrctệp của mình đến .vimrc.backvà xem liệu bạn có thể sao chép không. Có một vài nguồnthảo luận về vấn đề này, trong đó có ít nhất một với một giải pháp tiềm năng:

git config --global core.editor /usr/bin/vim

Tôi sẽ cố gắng loại bỏ .vimrcđầu tiên của bạn , tuy nhiên. Nó dường như gây ra nhiều đau đớn.


5
Cảm ơn, đã git config --global core.editor /usr/bin/vimsửa nó.
houbysoft

1
Giải pháp của @ applOOb là tốt hơn, vì nó không phải là một hack như thế này.
jefflunt

15

Như đã trả lời ở đây: /programming/22699614/git-commit-messages-lost-by-vi

Giải pháp thực sự là

git config --global core.editor vim -f

Theo tài liệu vim - -f option should be used when Vim is executed by a program that will wait for the edit session to finish


3
Cuối cùng ... đây là giải pháp đúng đắn. Nó cũng khắc phục vấn đề nhấn :Wvà có git từ chối tin nhắn cam kết của bạn khi bạn lưu nó sau đó.
Ryanmt

Một giải pháp thực sự là một giải pháp và không phải là một cách giải quyết khập khiễng! Tôi thực sự hy vọng những người đọc câu trả lời được chấp nhận sẽ hiểu sự khác biệt giữa cách vimgọi thông thường của họ và bản hack họ đang sử dụng.
jefflunt

1

Bạn có sử dụng plugin golang vim không? Dòng này gây ra vấn đề giá trị thoát vi cho tôi: filetype plugin indent off

Loại bỏ toàn bộ khối plugin golang đã .vimrckhắc phục sự cố. Cài đặt plugin golang bằng fugitive có thể dễ dàng như:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(Tôi vừa ghi lại vấn đề trong vấn đề này trên github vim-golang )


0

Có gì đó không ổn với Git config tôi đoán.

Vì vậy, giải pháp là thiết lập lại cấu hình Git và nó hoạt động với tôi:

git config --global core.editor $(which vim)

$(which vim)linh hoạt hơn /usr/bin/vim(vim thực thi có thể không có ở một số người)

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.