gVim là biên tập viên git theo cygwin


8

Tôi sử dụng msysgit và tôi muốn có gvim làm trình chỉnh sửa git của mình.

Tôi sử dụng cygwin bash thay vì git bash.

Đang chạy

$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe 

bắt đầu gvim. Nhưng nếu tôi đặt cái này làm trình soạn thảo git:

$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

và chạy cam kết tôi nhận được:

/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('

Sau đó tôi thêm dấu gạch chéo thoát khi cần:

$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe

Điều này vẫn mang lại cho tôi:

/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: /cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: No such file or directory
error: cannot run /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: No such file or directory
error: There was a problem with the editor '/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe'.

Vấn đề là, tôi có thể sao chép chuỗi từ sau khi "không thể chạy" và dán nó và nó chạy. Tôi đoán nó có thể được gây ra bởi dấu cách hoặc dấu ngoặc trong Tệp chương trình (x86) (họ đang nghĩ gì vậy?).

Vì cygwin dường như xử lý ổn, tôi nghĩ rằng tôi có thể tạo một liên kết tượng trưng trong say / usr / local / bin, vì nó nằm trong $ PATH của tôi và được đặt

$ git config core.editor /usr/local/bin/gvim

Tôi xác nhận rằng / usr / local / bin / gvim bắt đầu gvim. Tuy nhiên, việc chạy một cam kết mang lại cho tôi:

error: cannot spawn /usr/local/bin/gvim.exe: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim.exe'.

Bỏ cài đặt core.editor và thử

$ export GIT_EDITOR=/usr/local/bin/gvim.exe 

cho tôi cùng một lỗi.

Câu trả lời SO này gợi ý rằng tôi sử dụng một tập lệnh để mở trình soạn thảo.

Tôi xóa liên kết mềm gvim.exe khỏi / usr / local / bin và

$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

$ chmod u+x gvim

Tôi kiểm tra chạy script, nó hoạt động, gvim bắt đầu.

$ gvim

Thật không may khi tôi chạy cam kết tôi gặp lỗi

$ git commit
error: cannot spawn /usr/local/bin/gvim: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim'.

Tôi có thể làm gì để sử dụng gVim làm trình chỉnh sửa git? Có ai đã thử nó chưa? Tôi đã phạm sai lầm? Tôi phải thừa nhận là một người mới khi nói đến linux.


Bạn đã thử sử dụng cygwin vi thay thế? Bạn đã thử lệnh which gvimchưa?
Somantra

mà gvim xuất / usr / local / bin / gvim, chỉ khi có liên kết mềm hoặc tập lệnh ở đó. Tôi có lẽ nên nói rõ hơn lý do của tôi muốn gVim. Tôi sử dụng nó hàng ngày và đã thiết lập nó như tôi muốn. Nếu tôi sử dụng bất kỳ khác, tôi sẽ có hai cài đặt biên tập viên để duy trì.
johnny

Bạn có thể muốn xem xét sử dụng symlink hoặc repo cho các tập tin RC của bạn.
Somantra

Bạn có thể phải làm điều này với một tệp bó chứ không phải là tập lệnh shell cygwin. Ngoài ra, hãy cẩn thận với xung đột biến môi trường HOME giữa gVim dựa trên Windows và cgywin sẽ đặt $ HOME là gì.
Heptite

@Heptite Tôi cũng đã cố gắng tạo một tập tin bat cho nó. Không may mắn. Tôi nhận được lỗi không thể sinh sản được đề cập trong câu hỏi của tôi. Và bạn nói đúng về những xung đột. Tôi đã không có xung đột với gvim nhưng với git. git config --global theo cygwin lưu vào cygwin home, tương tự dưới msysgit lưu vào windows home.
johnny

Câu trả lời:


6

git config dường như loại bỏ một mức báo giá, vì vậy hãy thêm một cấp độ khác. Điều này làm việc cho tôi (với một biên tập viên khác):

git config core.editor "\" c: / Tệp chương trình (x86) /Vim/vim73/gvim.exe \ ""

. không cố gắng diễn giải () như bất cứ điều gì nó nghĩ điều này có nghĩa.)


0

Khi làm việc với các khoảng trắng trong tên đường dẫn, nói chung nên gói gọn chúng trong dấu ngoặc kép. Điều này sẽ giải quyết vấn đề của bạn:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"

Không may măn. / cygdrive / c / Chương trình \ Files \ (x86) /Vim/vim73/gvim.exe: / cygdrive / c / Tệp chương trình (x86) /Vim/vim73/gvim.exe: Không có lỗi tệp hoặc thư mục như vậy: không thể chạy / cygdrive / c / Chương trình \ Files \ (x86) /Vim/vim73/gvim.exe: Không có lỗi tệp hoặc thư mục như vậy: Có vấn đề với trình soạn thảo '/ cygdrive / c / Chương trình \ Files \ (x86) / Vim / vim73 / gvim.exe '. Đường dẫn là chính xác, / cygdrive / c / Chương trình \ Files \ (x86) /Vim/vim73/gvim.exe
johnny

Tôi xin lỗi, tôi đã thử nó với cygwin nhưng tôi đã sử dụng gói cygwin-git. Bạn có thể cho tôi biết làm thế nào bạn kết nối cygwin và msysgit?
p.vitzliputzli

Tôi đã cài đặt msysgit và sử dụng git bash trong một thời gian dài. Tôi không nhớ chính xác lý do tại sao tôi bắt đầu sử dụng cygwin, nhưng những gì tôi đã làm (tôi) là tôi thêm đường dẫn đến Git (/ cygdrive / c / Program Files (x86) / Git / bin) vào cygwin $ PATH của tôi.
johnny

0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. Nếu không có con đường, không có con đường

  2. Nếu đường dẫn trống, hãy chuyển đường dẫn trống

  3. Nếu đường dẫn là tương đối, vượt qua như là

  4. Nếu đường dẫn là tuyệt đối, chuyển đổi sang định dạng Windows

Sau đó, tôi đặt các biến này:

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITOR cho phép tập lệnh hoạt động với Git

  2. GIT_EDITOR cho phép tập lệnh hoạt động với các lệnh Hub

Nguồn

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.