Gunakan Notepad ++ dari Cygwin tanpa shell menunggu kode keluar

19

Saya menjalankan Cygwin dan ingin menggunakan Notepad ++ sebagai editor shell utama, seperti apa yang saya miliki di Mac saya, di mana saya dapat mengetik mate whateveruntuk membuka instance dari TextMate. Dalam ~/.bashrcfile saya di Cygwin saya memiliki set variabel lingkungan dan alias berikut:

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

Sebagian besar berfungsi: ketika saya mengetik np whateveratau ketika program Cygwin memanggil $ EDITOR, Notepad ++ terbuka.

Namun, shell menunggu sampai Notepad ++ ditutup dan tidak akan membiarkan input apa pun sampai saat itu. Ini mungkin khusus untuk bash, tetapi bagaimana saya bisa membuka Notepad ++ dari Cygwin dan memberi tahu shell untuk tidak menunggu kode keluar untuk melanjutkan? Menambahkan a &ke akhir perintah alias tidak berfungsi dengan benar — itu hanya membuka file tanpa judul dan memperingatkan filename: command not foundbukannya membuka file.

Terima kasih!

Andrew
sumber

Jawaban:

16

Anda bisa mencoba bashfungsi untuk meneruskan argumen sebelum tanda dan:

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

TETAPI masalah yang lebih besar mungkin merupakan ide untuk tidak menunggu sampai Notepad ++ keluar. Perintah Shell yang digunakan $EDITORbiasanya dirancang untuk menunggu sampai editor mengirim kembali indikasi bahwa pengeditan telah selesai. Ini biasanya berarti bahwa editor telah keluar (misalnya dengan viatau nano).

Emacs memiliki cara untuk mengatur Anda EDITORuntuk emacsclientdan kemudian ketika Anda mengedit selesai, Anda memukul keystroke ajaib ( C-x #) untuk menunjukkan editing yang lengkap. Jika Notepad ++ memiliki sesuatu yang serupa untuk pengguna cygwin, saya dapat melihat bagaimana ini akan bekerja.

Alternatif lain adalah dengan menggunakan Notepad biasa, membosankan, sederhana sebagai EDITOR Anda dan cadangan Notepad ++ untuk penggunaan berat (saya mendapat ide dari posting blog ini )

Doug Harris
sumber
Luar biasa — itu berhasil. Aku akan pergi dengan Notepad vanilla sebagai EDITOR dan Notepad ++ sebagai np ()
Andrew
Notepad juga harus menunggu pengeditan selesai
codezombie
8

Saya menyelesaikannya dengan symlink sederhana.

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

Tentu saja ~ / bin ada di $ PATH saya.

Sekarang untuk membuka file saya cukup ketik "npp filename.txt" dari prompt cygwin. Saya belum harus menggunakan & di akhir perintah.

Ini juga akan membuang tab ke jendela Notepad ++ yang sedang berjalan daripada membuka yang lain - DAN jika file sudah terbuka, itu tidak akan membukanya lagi.

Ethan Vaughn
sumber
Bagaimana Anda menambahkan ~ / nampan ke $ PATH?
eric f
3

export EDITOR = "/ cygdrive / c / Program \ Files \ '(x86)' / Notepad ++ / notepad ++. exe"

alias np = "/ cygdrive / c / Program \ Files \ '(x86)' / Notepad ++ / notepad ++. exe"

juga berfungsi untuk x86

mlanzero
sumber
2

Cukup tambahkan spasi dan ampersand (&) di akhir perintah Anda dan shell akan segera kembali ke mode input sambil membiarkan notepad ++ terbuka.

sedang diedit:

Saya tidak berbicara tentang menambahkannya ke alias Anda. Tambahkan ke akhir perintah Anda seperti ini:

np whatever &

Robert S Ciaccio
sumber
1
Ooh. Sejauh ini terlihat bagus. Apakah ada cara untuk memasukkannya ke dalam .bash_profilesehingga saya tidak perlu mengetiknya sepanjang waktu?
Andrew
Saya bukan ahli bash tapi saya berasumsi Anda bisa membuat alias Anda mengambil variabel yang merupakan argumen, dan juga menyertakan ampersand di akhir. Seseorang yang lebih pintar dengan bash mungkin bisa memberi Anda sintaks yang tepat. Saya hanya tahu bagaimana menjawab pertanyaan Anda karena saya dulu melakukan hal yang sama persis ketika bekerja di lingkungan dev windows :)
Robert S Ciaccio
Anda tidak dapat membuat alias mengambil variabel di Bash. Anda harus menggunakan fungsi atau skrip.
Dijeda sampai pemberitahuan lebih lanjut.
1

Alias ​​tidak mengambil argumen yang disisipkan. Gunakan fungsi sebagai gantinya.

function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }
garyjohn
sumber
1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

Skrip ini memulai Notepad ++ di latar belakang, meneruskan argumen baris perintah sebelum tanda '&'

Seperti yang disarankan Doug , memiliki default $EDITORyang tidak memblokir dapat menyebabkan masalah.

Leftium
sumber
0

Ada perintah khusus di cygwin untuk mencapai ini. Pastikan Anda mengunduh run.exe, dan pastikan itu ada di PATH Anda (atau PATH Anda berisi file yang dapat dieksekusi)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
Homolka yang kaya
sumber