ใช้ Notepad ++ จาก Cygwin โดยที่เชลล์ไม่ต้องรอโค้ดออก


19

ฉันใช้ Cygwin และต้องการใช้ Notepad ++ เป็นเครื่องมือแก้ไขเชลล์หลักอย่างที่ฉันมีใน Mac ซึ่งฉันสามารถพิมพ์mate whateverเพื่อเปิดอินสแตนซ์ของ TextMate ได้ ใน~/.bashrcไฟล์ของฉันใน Cygwin ฉันมีชุดนามแฝงและตัวแปรสภาพแวดล้อมต่อไปนี้:

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

ส่วนใหญ่ใช้งานได้: เมื่อฉันพิมพ์np whateverหรือเมื่อโปรแกรม Cygwin เรียกใช้ $ EDITOR, Notepad ++ จะเปิดขึ้น

อย่างไรก็ตามเชลล์รอจนกระทั่ง Notepad ++ ปิดและจะไม่อนุญาตให้ป้อนข้อมูลใด ๆ จนกว่าจะถึงตอนนั้น สิ่งนี้อาจเฉพาะเจาะจงกับการทุบตี แต่ฉันจะเปิด Notepad ++ จาก Cygwin ได้อย่างไรและบอกให้เชลล์ไม่รอให้รหัสออกดำเนินการต่อ การเพิ่มคำ&ต่อท้ายคำสั่ง alias ทำงานไม่ถูกต้องเพียงแค่เปิดไฟล์ที่ไม่มีชื่อและเตือนfilename: command not foundแทนที่จะเปิดไฟล์

ขอบคุณ!

คำตอบ:


16

คุณสามารถลองใช้bashฟังก์ชันเพื่อส่งอาร์กิวเมนต์ก่อนเครื่องหมายแอมเปอร์แซนด์:

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

แต่ปัญหาที่ใหญ่กว่าอาจเป็นความคิดทั้งหมดที่ไม่รอจนกว่า Notepad ++ จะออก คำสั่งของเชลล์ที่ใช้$EDITORโดยทั่วไปได้รับการออกแบบให้รอจนกว่าตัวแก้ไขจะส่งการบ่งชี้ว่าการแก้ไขเสร็จสิ้นแล้ว ซึ่งมักจะหมายความว่าตัวแก้ไขได้ออกแล้ว (เช่นมีviหรือnano)

Emacs มีวิธีตั้งค่าของคุณEDITORเป็นemacsclientและเมื่อคุณแก้ไขเสร็จแล้วคุณจะต้องกดแป้นวิเศษ ( C-x #) เพื่อระบุว่าการแก้ไขเสร็จสมบูรณ์ ถ้า Notepad ++ มีบางอย่างที่คล้ายกันสำหรับผู้ใช้ cygwin ฉันสามารถดูว่ามันจะทำงานอย่างไร

อีกทางเลือกหนึ่งคือการใช้ Notepad ธรรมดาที่เรียบง่ายน่าเบื่อเป็น EDITOR ของคุณและจอง Notepad ++ สำหรับการใช้งานหนัก (ฉันได้รับแนวคิดจากโพสต์บล็อกนี้ )


เยี่ยมยอด - ใช้ได้ผล ฉันจะไปกับวานิลลา Notepad เป็นบรรณาธิการและ Notepad ++ เป็น NP ()
แอนดรู

Notepad ยังต้องรอการแก้ไขให้เสร็จด้วย
codezombie

8

ฉันแก้ไขมันด้วย symlink ง่ายๆ

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

แน่นอน ~ / bin อยู่ใน $ PATH ของฉัน

ตอนนี้เพื่อเปิดไฟล์ฉันแค่พิมพ์ "npp filename.txt" จาก cygwin prompt ฉันไม่ได้ใช้ & ตอนท้ายของคำสั่ง

นี่จะเป็นการโยนแท็บลงในหน้าต่าง Notepad ++ ที่กำลังรันอยู่แทนที่จะเปิดอีกอันหนึ่ง - และถ้าไฟล์นั้นเปิดอยู่แล้วมันจะไม่เปิดขึ้นมาอีก


คุณจะเพิ่ม ~ / bin ใน $ PATH ได้อย่างไร?
eric f

3

ส่งออก EDITOR = "/ cygdrive / c / Program \ Files \ '(x86)' / Notepad ++ / Notepad ++. exe"

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

ใช้ได้กับ x86 ด้วย


2

เพียงเพิ่มช่องว่างและเครื่องหมายและ (&) ที่ส่วนท้ายของคำสั่งของคุณและเชลล์จะกลับสู่โหมดอินพุตทันทีในขณะที่เปิด notepad ++ ไว้

ในการแก้ไข:

ฉันไม่ได้พูดถึงการเพิ่มลงในนามแฝงของคุณ เพิ่มไปยังท้ายคำสั่งของคุณเช่นนี้:

np whatever &


1
โอ มันดูดีมาก มีวิธีที่จะใส่ไว้ใน.bash_profileดังนั้นฉันไม่จำเป็นต้องพิมพ์มันตลอดเวลา?
Andrew

ฉันไม่ใช่ผู้เชี่ยวชาญด้านการทุบตี แต่ฉันคิดว่าคุณสามารถทำให้นามแฝงของคุณใช้ตัวแปรซึ่งเป็นอาร์กิวเมนต์และยังรวมถึงเครื่องหมายแอมเปอร์แซนด์และท้ายที่สุด บางคนฉลาดขึ้นด้วยการทุบตีอาจให้ไวยากรณ์ที่แน่นอนกับคุณ ฉันเพียงรู้วิธีที่จะตอบคำถามของคุณเพราะผมใช้ในการทำสิ่งเดียวที่แน่นอนในขณะที่ทำงานในสภาพแวดล้อมที่หน้าต่าง dev :)
โรเบิร์ตเอ Ciaccio

คุณไม่สามารถทำให้นามแฝงรับตัวแปรใน Bash ได้ คุณต้องใช้ฟังก์ชั่นหรือสคริปต์
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

1

ชื่อแทนไม่รับการโต้แย้งที่ถูกสอดแทรก ใช้ฟังก์ชั่นแทน

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

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

สคริปต์นี้เริ่ม Notepad ++ ในพื้นหลังผ่านอาร์กิวเมนต์บรรทัดคำสั่งก่อนหน้า '&'

ตามที่ดั๊กแนะนำการมีค่าเริ่มต้น$EDITORที่ไม่บล็อกอาจทำให้เกิดปัญหา


0

มีคำสั่งเฉพาะใน cygwin เพื่อทำสิ่งนี้ให้สำเร็จ ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลด run.exe และตรวจสอบให้แน่ใจว่ามันอยู่ใน PATH ของคุณ (หรือ PATH ของคุณมีไฟล์ปฏิบัติการ)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.