Không thể thực thi trình soạn thảo


153

Tôi thường không phải sửa đổi nhiều tin nhắn cam kết, nhưng nó đã xảy ra một hoặc hai lần và tôi không bao giờ nhớ đã thấy điều này. Tôi hy vọng người khác có. Khi tôi git rebase -i HEAD~7, danh sách dự kiến ​​sẽ mở trong vi chính xác như mong đợi. Tôi thay đổi các pickgiá trị đến editnơi thích hợp và sau đó :wq.

Không thể thực thi trình soạn thảo

Các core.editorthiết lập trong toàn cầu của tôi .gitconfigvi(Tôi cũng đã thay đổi nó thành vimmột động thái tuyệt vọng). Tôi đã thử sử dụng mate, nhưng điều đó thậm chí không mở đúng danh sách ban đầu nên tôi đã thay đổi lại.

Tôi đang sử dụng v1.7.3 và sẽ hoan nghênh mọi đề xuất.


1
Nguồn bao gồm git_editor "$TODO" || die_abort "Could not execute editor". Vì bạn nói rằng trình soạn thảo thực sự xuất hiện, điều đó có nghĩa là nó sẽ trả về mã thoát không khác. Bạn có thể sao chép hành vi đó bằng cách sử dụng nó bình thường trên dòng lệnh không?
Cascabel

Điều kỳ lạ với tôi là vi khởi chạy để hiển thị danh sách các cam kết, nhưng khi tôi lưu và đóng mọi thứ chỉ chết. Xem câu trả lời của tôi cho sự thay đổi mà tôi đã thực hiện để làm cho nó bắt đầu hoạt động một cách kỳ diệu.
Rob Wilkerson

Bạn đang chạy hệ điều hành nào? Chạy OSX Lion tôi gặp rắc rối tương tự và câu trả lời của bạn đã khắc phục nó. +1
Adam Lewis

@AdamLewis - Bây giờ tôi không thể chắc chắn, nhưng có lẽ là 10.6 hoặc .7 đã đưa ra ngày. OSX, chắc chắn.
Rob Wilkerson

5
Tôi nghĩ rằng tôi đã tạo ra vấn đề này khi tôi sử dụng homebrew để cài đặt một vim mới. Cài đặt git config --global core.editor "/usr/local/bin/vim"cố định nó cho tôi.
mmell

Câu trả lời:


185

Hôm qua chỉ là một trong những ngày đó. Trong một thời gian ngắn, tôi quyết định đặt đường dẫn đầy đủ thành vi (ví dụ /usr/bin/vi) thay vì chỉ thực thi. Bây giờ mọi thứ hoạt động. Tôi phải thừa nhận rằng tôi không nhận được nó vì nó vihoàn toàn có thể tự thực hiện được ( $EDITORbiến env của tôi cũng được đặt thành vi), nhưng nó hoạt động và nghiệp kỹ thuật của tôi gần đây không được tốt lắm nên có lẽ tôi không nên đặt câu hỏi các vị thần sẽ ...


6
Nơi bạn đã đặt đường dẫn đầy đủ thành / usr / bin / vi?
Amala

131
Tôi đặt nó trong tập tin cấu hình toàn cầu của tôi : git config --global core.editor "/usr/bin/vim".
Rob Wilkerson

Tôi gặp vấn đề tương tự. Vì lý do tôi không thể hiểu, cài đặt core.editor của tôi được đặt thành / user / bin / vim thay vì / usr / bin / vim
jonnybot

Có cùng một vấn đề nhưng với Sublime Text - đường dẫn đầy đủ cuối cùng đã giải quyết mọi thứ. Điều này thật kỳ lạ bởi vì tôi chắc chắn rằng tất cả đều hoạt động tốt trước đó ...: - \
Hal

git config --global color.editor "/usr/local/bin/vim"đã làm việc cho tôi :), cảm ơn
przbadu

159

Lệnh sau

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

sửa nó

[biên tập]

Bây giờ tôi thấy rằng ai đó đã đăng nó trong các ý kiến. Hy vọng nó vẫn hữu ích cho một số người mù như tôi.


6
Ví dụ: đối với Windows (thiếu dấu ngoặc đơn, là vấn đề của tôi): git config --global core.editor "'C: \ Program Files (x86) \ Vim \ vim74 \ vim.exe'"
chrjs

1
Vâng, cái này ^. Để làm rõ điều này, hãy sử dụng dấu ngoặc kép xung quanh dấu ngoặc đơn xung quanh đường dẫn đến tệp thực thi.
Jacob

Hoạt động như một lá bùa!
R11G

7

Không giống như các câu trả lời khác ở đây cho đến nay, đối với tôi, sử dụng đường dẫn tuyệt đối đến vi và đặt core.editorcấu hình git , không đủ để giải quyết vấn đề. (Những cái đó đã được đặt sẵn.)

Trong tình huống của tôi, vấn đề đã được giải quyết bằng cách thêm -fcờ vào lệnh vi:

git config --global core.editor '/usr/bin/vi -f'

Khi đã có -ftùy chọn này, tôi có thể sử dụng git rebase -ivà khi tôi lưu và thoát khỏi danh sách cam kết, rebase sẽ tiếp tục như vậy thay vì đưa ra lỗi "không thể thực thi trình soạn thảo".

Trang vim man nói về tùy chọn -f,

Đối với phiên bản GUI, Vim sẽ không rẽ nhánh và tách ra khỏi vỏ mà nó đã được khởi động. ... Tùy chọn này nên được sử dụng khi Vim được thực thi bởi một chương trình sẽ chờ phiên chỉnh sửa kết thúc (ví dụ: thư).

Vâng, tôi không sử dụng phiên bản GUI mà tôi biết. Tôi đang chạy gitở dòng lệnh bash trong cửa sổ terminal trên masOS Sierra 10.12.6. Nhưng vì git rebase -ichờ phiên chỉnh sửa kết thúc, tôi cho rằng đó là lý do tại sao -ftùy chọn này là cần thiết ở đây. Có thể vim (không có -f) cố gắng rẽ nhánh / tách ra khỏi vỏ vì lý do nào đó tôi không thể tìm ra.


6

Tôi gặp vấn đề này và nó được gây ra bởi một phần của plugin vcscommand cho vim. Bắt đầu vim với bất kỳ lệnh nào trong số này dẫn đến mã thoát 1 ("lỗi"):

  • vi
  • vim

Nhưng những điều này đã cho tôi mã thoát 0 ("thành công"):

  • /usr/bin/vi
  • /usr/bin/vim
  • vi -u NONE
  • vim -u NONE

Tôi đã có thể theo dõi nó trở lại plugin cụ thể bằng cách vô hiệu hóa ~/.vimrcvà các tệp trong ~/.vimbằng cách đổi tên chúng và chạy vi -c q ; echo $?để nhanh chóng chạy vim và in mã thoát.


1
Tôi đã có cùng một vấn đề và thiết lập đường dẫn đầy đủ để vim hoạt động: git config --global core.editor / usr / bin / vim
James

Một thủ phạm có thể có vẻ là plugin mầm bệnh trên Mac OS X .
sschuberth

3

Đối với tôi, đó là một vấn đề với .vimrc của tôi. Tạm thời đổi tên tập tin đó đã sửa nó. Tiếp theo là gỡ lỗi .vimrc của tôi. Điều này rất giống với kinh nghiệm của ignu.


Vâng, tôi đã có! Macvim im lặng trong .vimrc của tôi, để đặt colorcheme thành nếu nó tồn tại và không làm phiền tôi nếu nó không hoạt động (vì vậy dòng lệnh vim sẽ hoạt động). Mặt khác, điều đó đã thay đổi trạng thái thoát thành 1 khi thất bại, ngay cả khi im lặng!.
Tối đa

3

Nếu bạn muốn vì bất kỳ lý do gì, hãy sử dụng cao siêu, bạn có thể làm một cái gì đó như sau trong tệp cấu hình toàn cầu của mình:

 git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"

1

Tôi chỉ mất một lúc để theo dõi vấn đề của mình với một trong những plugin của mình.

(cụ thể, đó là https://github.com/ervandew/supertab )

Tôi đoán đó là nhược điểm để tự động cập nhật tất cả các plugin của tôi.

Vì vậy, lời khuyên tốt nhất, vô hiệu hóa một nửa vimrc và plugin của bạn. Nếu điều đó không có ích, vấn đề là với nửa kia của bạn.


Tôi có cùng một vấn đề với supertab.
harithski

Làm thế nào bạn theo dõi nó xuống supertab? Đó sẽ là thông tin thực sự hữu ích.
Justin Force

1

Một lựa chọn khác là sử dụng nanotrình soạn thảo.

$ whereis nano
$ git config --global core.editor path/to/nano

Sửa nó.


1

Tôi đã cố gắng để xóa các cam kết như được hiển thị ở đây https://www.youtube.com/watch?v=V5KrD7CmO4o . Trình soạn thảo git của tôi (notepad ++) đã mở ra trong bước khởi động lại. Nhưng, trong bước thông báo cam kết sửa đổi, tôi đã thấy vấn đề "Không thể thực thi trình chỉnh sửa". Điều này có thể xảy ra do cài đặt trình soạn thảo git bị sai và cũng vì tôi đã cài đặt notepad ++ ở một vị trí không chuẩn trên hệ thống windows của tôi. Đó là, 'git config core.editor' đã cho tôinotepad++ -multilnst- nosession .

Để khắc phục sự cố, cung cấp đường dẫn đầy đủ như thế này:

git config --global core.editor "'C:\CustomFolder\NPP\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Tham khảo: https://www.youtube.com/watch?v=YLxdkcT6H4g


0

Bạn có chắc chắn rằng / usr / bin / vim là vào ngày 1.7.3 không? Tôi gặp vấn đề tương tự vì tôi đã cài đặt plugin sao lưu chỉ được hỗ trợ trong 1.7.3 và vì một số lý do / usr / bin / vim đã bị hạ cấp xuống 1.7.2, có lẽ vì một bản cập nhật lớn của XCode. ..


0

Tôi cũng gặp vấn đề này khi tôi đã mở vim cho một cuộc nổi loạn ở một nhà ga khác. Tôi đã bắt đầu cuộc nổi loạn, bị gián đoạn, và khi tôi quay lại, tôi đã thử lại từ đầu trong thiết bị đầu cuối khác, không nhận ra tôi đang ở giữa cuộc nổi loạn tương tự ở nơi khác. Chỉ cần kết thúc phiên rebase vim trong thiết bị đầu cuối khác hoạt động tốt.


0

Thật kỳ lạ, chỉ cần thử lại nó làm việc cho tôi.

Các biến core.editor và $ EDITOR của tôi không được đặt.


0

Đối với tôi, bằng cách sử dụng các cửa sổ: đóng thiết bị đầu cuối hiện tại và mở một thiết bị khác (win + R, nhập 'cmd', sau đó 'enter'), sau đó nó đột nhiên hoạt động.


0

Giải pháp mã VS:

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron"

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.