Làm cách nào để sử dụng Notepad ++ (hoặc loại khác) với msysgit?


210

Làm cách nào để sử dụng Notepad ++ (hoặc bất kỳ trình soạn thảo nào khác ngoài vim) với msysgit?

Tôi đã thử tất cả những điều sau đây nhưng không có kết quả:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe

1
Bất kỳ thông báo lỗi? Bạn đã thử thiết lập biến môi trường EDITOR chưa?
csl

4
Hãy thử tìm kiếm tại đây: stackoverflow.com/questions/10564/
Mạnh

Chỉ cần thêm một số thông tin về đường dẫn của tập lệnh, bao gồm cả khoảng trắng, theo yêu cầu.
VonC

Câu trả lời:


76

Cập nhật 2010-2011:

Giải pháp của zumalifeguard (được nâng cấp) đơn giản hơn so với giải pháp ban đầu, vì nó không cần thêm một tập lệnh trình bao bọc.

Như tôi đã giải thích trong " Làm cách nào tôi có thể thiết lập trình chỉnh sửa để hoạt động với Git trên Windows? ", Tôi thích trình bao bọc hơn, vì sẽ dễ dàng hơn để thử và chuyển đổi trình chỉnh sửa hoặc thay đổi đường dẫn của một trình chỉnh sửa mà không phải đăng ký thay đổi. với một git configlần nữa .
Nhưng đó là tôi.


Thông tin bổ sung : giải pháp sau đây hoạt động với Cygwin , trong khi giải pháp của zuamlifeguard thì không.


Câu trả lời gốc.

Sau đây là

C:\prog\git>git config --global core.editor C:/prog/git/npp.sh

C:/prog/git/npp.sh:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

làm việc. Các lệnh này được hiểu là shell script, do đó, ý tưởng bao bọc bất kỳ cửa sổ nào của các lệnh trong một shkịch bản.
(Như Franky nhận xét : "Hãy nhớ lưu .shtệp của bạn bằng các kết thúc dòng kiểu Unix hoặc nhận thông báo lỗi bí ẩn!")

Chi tiết khác về câu hỏi SO Làm cách nào tôi có thể thiết lập trình chỉnh sửa để hoạt động với Git trên Windows?

Lưu ý -multiInsttùy chọn '', để đảm bảo phiên bản notepad ++ mới cho mỗi cuộc gọi từ Git.

Cũng lưu ý rằng, nếu bạn đang sử dụng Git trên Cygwin (và muốn sử dụng Notepad ++ từ Cygwin ), thì scphantm giải thích trong " sử dụng Notepad ++ cho Git bên trong Cygwin " mà bạn phải biết rằng:

gitđang vượt qua nó một cygwincon đường và nppkhông biết phải làm gì với nó

Vì vậy, kịch bản trong trường hợp đó sẽ là:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

Nhiều dòng cho dễ đọc:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

Với "$(cygpath -w "$*")"việc là phần quan trọng ở đây.

Val đã nhận xét (và sau đó xóa) rằng bạn không nên sử dụng -notabbartùy chọn:

Việc vô hiệu hóa tab trong quá trình rebase là không tốt, nhưng sẽ gây hại rất nhiều cho khả năng sử dụng Notepad chung vì nó -notabtrở thành cài đặt mặc định và bạn phải Settings>Preferences>General>TabBar> Hide>uncheckmỗi khi bạn khởi động notepad sau khi rebase. Đây là địa ngục. Bạn đề nghị địa ngục.

Vì vậy, sử dụng thay vì:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

Đó là:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

Nếu bạn muốn đặt tập lệnh ' npp.sh' trong một đường dẫn có khoảng trắng (như trong ' c:\program files\...',), bạn có ba tùy chọn:

  • Cố gắng trích dẫn đường dẫn (dấu ngoặc đơn hoặc dấu ngoặc kép), như trong:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • hoặc thử ký hiệu tên ngắn (không bị đánh lừa):

    git config --global core.editor C:/progra~1/git/npp.sh
  • hoặc (yêu thích của tôi) đặt ' npp.sh' trong một phần thư mục của %PATH%biến môi trường của bạn . Sau đó, bạn sẽ không chỉ định bất kỳ đường dẫn nào cho tập lệnh.

    git config --global core.editor npp.sh
  • Steiny báo cáo trong các ý kiến phải làm:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'

Tôi đã làm điều này để làm việc bằng cách đặt npp.sh trong thư mục gốc của ổ đĩa của tôi (tức là - C: /npp.sh). Bất cứ khi nào tôi cố gắng nhắm mục tiêu một thư mục có khoảng trắng (ví dụ: D: / Tệp chương trình (x86) /Git/npp.sh), nó không thành công, cách nào để thoát khoảng trắng và / hoặc làm cho nó hoạt động?
PHLAK

đặt dấu ngoặc kép xung quanh nó. Xem làm thế nào anh ta có trích dẫn xung quanh toàn bộ điều trong ví dụ của mình?
Fred

2
Câu trả lời của zumalifeguard đã làm việc cho tôi. Nó không yêu cầu trình bao bọc kịch bản lệnh shell.
wbinford

1
@wbinford: Tôi đã thêm một liên kết đến câu trả lời của zumalifeguard (mà tôi nêu lên), cũng như lý do tôi thích đăng ký một trình bao bọc hơn là lệnh trực tiếp.
VonC

1
Tôi đã thử nhiều kết hợp ở trên và không có kết quả nào với git. Tôi có tập lệnh npp trong đường dẫn của mình và nếu từ bảng điều khiển cygwin của tôi, tôi gõ, "npp {file}" npp mở tệp tốt, nhưng khi tôi thực hiện một "git rebase -i" npp sẽ mở bằng một tệp trống thay vì hợp nhất tập tin. bất kỳ ý tưởng tại sao điều này sẽ xảy ra?
Scphantm

433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Hoặc, đối với Windows 64 bit và cài đặt Notepad ++ 32 bit:

git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Hoặc, những điều sau đây có thể được ban hành trên dòng lệnh trên Windows 32 bit hoặc 64 bit. Nó sẽ kéo vị trí của notepad ++. Exe từ registry và cấu hình git để sử dụng nó tự động:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

Nếu bạn muốn đặt phần trên từ tệp .BAT hoặc .CMD, bạn phải thay thế% A bằng %% A và% B bằng %% B


9
hoạt động trong phần mở rộng git quá. lưu ý rằng đối với các cửa sổ 64 bit, mục nhập là"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell

15
Điều ngớ ngẩn là -notabbar sẽ vô hiệu hóa thanh tab vĩnh viễn, không chỉ cho phiên đó. Khi khởi chạy notepad ++ bình thường, bạn phải vào hộp thoại cài đặt để bật lại thanh tab.
Oskar Berggren

4
Tôi đã phải sử dụng: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... không chắc tại sao.
David Faivre

1
Tôi có Windows 7 64-bit, v1.9.2 msysgit và Notepad ++ v6.6.9 và điều này đã làm việc HOÀN HẢO . Cảm ơn.
Radu Murzea

2
@CoDEmanX Nếu không có -multiInstnó sẽ chỉ báo hiệu cho Notepad ++ đang chạy để mở tệp và sau đó thoát ngay lập tức. Đây có thể là một vấn đề lớn nếu bất cứ điều gì gọi trình soạn thảo đều mong đợi nó chỉ trả về khi thực hiện chỉnh sửa (nghĩa là thao tác đồng bộ, như trường hợp khi gọi vi). git rebase -iVí dụ, hãy thử một rebase tương tác ( ). Nếu điều này vẫn hoạt động như mong đợi, thì bạn vẫn ổn.
blubberdiblub

7

Điều này làm việc cho tôi

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe

tôi đã làm như vậy .. bây giờ làm thế nào để mở notepad ++ để cam kết với tin nhắn ?? dấu phẩy là gì ?? xin vui lòng bạn có thể đưa ra một ví dụ
shridutt kothari

4
Thêm -multiInsttùy chọn là rất quan trọng ở đây, giống như trong các câu trả lời khác.
blubberdiblub

1
Điều này không tốt vì hai lý do. Đầu tiên, nếu âm lượng C: là NTFS với tùy chọn tên tệp 8.3 bị tắt, thì không có gì C:\Progra~1cả. Thứ hai, có thể có nhiều C:\Progra*thư mục, vì vậy ~1hậu tố không nhất thiết là thư mục hợp lệ.
kkm

5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

Điều đó đã đánh lừa tôi! Sau đó vẻ .gitconfig như: [lõi] editor = \ "c: Chương trình \\ Files (x86) \\ Notepad ++ exe \\ notepad ++ \". -MultiInst -nosession -noPlugin
AtliB

Xem câu trả lời được bình chọn cao nhất, bao gồm câu trả lời này (Tôi không đọc đủ xa)
AtliB


3

Tôi sử dụng cách tiếp cận với biến PATH. Đường dẫn đến Notepad ++ được thêm vào biến PATH của hệ thống và sau đó core.editor được đặt như sau:

git config --global core.editor notepad++

Ngoài ra, bạn có thể thêm một số tham số bổ sung cho Notepad ++:

git config --global core.editor "notepad++.exe -multiInst"

(như tôi đã nêu chi tiết trong " Git core.editorcho Windows ")

Và ở đây bạn có thể tìm thấy một số tùy chọn bạn có thể sử dụng khi nêu các tùy chọn dòng lệnh của Notepad ++ .


1

CẬP NHẬT 2015

Nếu bạn giải nén / cài đặt Notepad ++ vào c:\utils\npp\và đổi tên notepad ++. Đơn giản là npp.exe, thì tất cả những gì bạn phải làm là

git config --global core.editor c:/utils/npp/npp.exe

Không có kịch bản bao bọc hoặc thủ thuật khác. Không cần phải có Notepad ++ trong PATH.


Cập nhật 2020: dường như bạn đã bỏ lỡ các tùy chọn để mở phiên bản notepad mới. Tôi đã sử dụng từ cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"và nó đang hoạt động từ cả hai cmd terminalgit bash
oleksa

1

Tôi đang sử dụng Windows 10 và notepad ++ và tôi nhận được thông báo lỗi này:

line 0: syntax error near unexpected token `(' git windows

Vì vậy, tôi thực hiện thiết lập theo cách này:

git config --global core.editor 'C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe'

Và nó hoạt động


0

Làm theo những chỉ dẫn này,

  1. Trước tiên hãy đảm bảo rằng bạn đã cài đặt notepad ++ trên hệ thống của mình và đó là chương trình mặc định để mở tệp .txt.

  2. Sau đó cài đặt gitpad trên hệ thống của bạn. Lưu ý lần cuối tôi kiểm tra liên kết tải xuống đã bị hỏng, vì vậy hãy tải xuống từ đây như được giải thích .

Sau đó, trong khi cam kết, bạn sẽ thấy trình soạn thảo văn bản yêu thích của mình bật lên.


0

Tôi đã sử dụng giải pháp của starikovs. Tôi bắt đầu với một cửa sổ bash và đưa ra các lệnh

cd ~
touch .bashrc

Sau đó, tôi tìm thấy tệp .bashrc trong windows explorer, mở nó bằng notepad ++ và thêm vào

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

để bash biết nơi tìm Notepad ++. (Có Notepad ++ trong bash PATH là một điều hữu ích!) Sau đó, tôi dán dòng của anh ấy

git config --global core.editor "notepad++.exe -multiInst"

vào một cửa sổ bash. Tôi đã bắt đầu một cửa sổ bash mới cho kho git để kiểm tra mọi thứ bằng lệnh

git rebase -i HEAD~10

và tệp được mở trong Notepad ++ như hy vọng.


0

Đây là một giải pháp với Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${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 không trống, chuyển đổi sang định dạng Windows.

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

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.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.