Sử dụng Notepad ++ từ Cygwin mà không cần trình bao chờ mã thoát


19

Tôi đang chạy Cygwin và muốn sử dụng Notepad ++ làm trình chỉnh sửa shell chính, giống như những gì tôi có trên máy Mac, nơi tôi có thể nhập mate whateverđể mở phiên bản TextMate. Trong ~/.bashrctệp của tôi trong Cygwin, tôi có bộ bí danh và biến môi trường sau:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"

Nó chủ yếu hoạt động: khi tôi gõ np whateverhoặc khi chương trình Cygwin gọi $ EDITOR, Notepad ++ sẽ mở.

Tuy nhiên, shell chờ cho đến khi Notepad ++ được đóng và sẽ không cho phép bất kỳ đầu vào nào cho đến lúc đó. Điều này có thể cụ thể đối với bash, nhưng làm cách nào tôi có thể mở Notepad ++ từ Cygwin và nói với trình bao để không chờ mã thoát tiếp tục? Thêm một &vào cuối lệnh bí danh không hoạt động chính xác. Nó chỉ mở một tệp không có tiêu đề và cảnh báo filename: command not foundthay vì mở tệp.

Cảm ơn!

Câu trả lời:


16

Bạn có thể thử một bashhàm để truyền các đối số trước ký hiệu:

np ()
{
    /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}

NHƯNG vấn đề lớn hơn có thể là toàn bộ ý tưởng không chờ đợi cho đến khi Notepad ++ thoát. Các lệnh Shell sử dụng $EDITORthường được thiết kế để đợi cho đến khi trình soạn thảo gửi lại một dấu hiệu cho thấy việc chỉnh sửa đã hoàn tất. Điều này thường có nghĩa là trình soạn thảo đã thoát (ví dụ với vihoặc nano).

Emacs có một cách để thiết lập của bạn EDITORđể emacsclientrồi khi bạn đang chỉnh sửa làm, bạn nhấn một phím tắt huyền diệu ( C-x #) để chỉ chỉnh sửa đó là hoàn tất. Nếu Notepad ++ có một cái gì đó tương tự cho người dùng cygwin, tôi có thể thấy nó sẽ hoạt động như thế nào.

Một cách khác là sử dụng Notepad đơn giản, nhàm chán, đơn giản làm EDITOR của bạn và dành riêng Notepad ++ để sử dụng nhiều (tôi có ý tưởng từ bài đăng trên blog này )


Tuyệt vời mà làm việc. Tôi sẽ dùng vanilla Notepad với tư cách là EDITOR và Notepad ++ với tư cách là np ()
Andrew

Notepad cũng yêu cầu chờ chỉnh sửa kết thúc
codezombie

8

Tôi đã giải quyết nó bằng một symlink đơn giản.

ln -s /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe ~/bin/npp

Tất nhiên ~ / bin nằm trong $ PATH của tôi.

Bây giờ để mở tệp tôi chỉ cần gõ "npp filename.txt" từ dấu nhắc của cygwin. Tôi đã không phải sử dụng & ở cuối lệnh.

Điều này cũng sẽ ném một tab vào cửa sổ Notepad ++ hiện đang chạy thay vì mở một tab khác - VÀ nếu tệp đã được mở, nó sẽ không mở lại.


Làm thế nào để bạn thêm ~ / bin vào $ PATH?
eric f

3

xuất EDITOR = "/ cygdrive / c / Chương trình \ Files \ '(x86)' / Notepad ++ / notepad ++. exe"

bí danh np = "/ cygdrive / c / Chương trình \ Files \ '(x86)' / Notepad ++ / notepad ++. exe"

cũng hoạt động cho x86


2

Chỉ cần thêm một khoảng trắng và ký hiệu (&) vào cuối lệnh của bạn và shell sẽ ngay lập tức trở về chế độ nhập trong khi mở notepad ++.

về chỉnh sửa:

Tôi không nói về việc thêm nó vào bí danh của bạn. Thêm nó vào cuối lệnh của bạn như thế này:

np whatever &


1
Ôi. Điều này có vẻ tốt cho đến nay. Có cách nào để đưa nó vào trong .bash_profileđể tôi không cần phải gõ nó mọi lúc không?
Andrew

Tôi không phải là một chuyên gia bash nhưng tôi cho rằng bạn có thể làm cho bí danh của mình lấy một biến là đối số, và cũng bao gồm cả dấu và cuối cùng. Ai đó thông minh hơn với bash có thể cung cấp cho bạn cú pháp chính xác. Tôi chỉ biết làm thế nào để trả lời câu hỏi của bạn bởi vì tôi đã từng làm điều tương tự chính xác khi làm việc trong môi trường phát triển windows :)
Robert S Ciaccio

Bạn không thể tạo một bí danh lấy một biến trong Bash. Bạn phải sử dụng một chức năng hoặc một kịch bản.
Tạm dừng cho đến khi có thông báo mới.

1

Các bí danh không có các đối số được nội suy. Sử dụng một chức năng thay thế.

function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }

1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

Tập lệnh này khởi động Notepad ++ ở chế độ nền, chuyển các đối số dòng lệnh trước dấu '&'

Như Doug khuyên , việc mặc định $EDITORkhông chặn có thể gây ra sự cố.


0

Có một lệnh cụ thể trong cygwin để thực hiện điều này. Hãy chắc chắn rằng bạn đã tải xuống run.exe và đảm bảo rằng nó trong PATH của bạn (hoặc PATH của bạn chứa tệp thực thi)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
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.