เปิดแอปพลิเคชันเพื่อแก้ไขไฟล์ข้อความจากบรรทัดคำสั่ง


9

เมื่อติดตั้งTextWranglerใน OSX คุณจะได้editรับคำสั่งที่อนุญาตให้คุณเปิดไฟล์ข้อความใด ๆ จากบรรทัดคำสั่ง

เป็นไปได้ไหมที่มีฟังก์ชั่นที่คล้ายกันใน Ubuntu เพื่อพิมพ์คำสั่งบางอย่างบนเทอร์มินัลเพื่อเปิดไฟล์ในโปรแกรมแก้ไขข้อความเฉพาะ (พูด Kate)?

คำตอบ:


11

หากต้องการเปิดไฟล์โดยใช้kateคุณสามารถเรียกใช้สิ่งต่อไปนี้:

kate filename

นี่อาจแสดงข้อความเช่น:

kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/home/user/.local/share/mime/magic"
Bus::open: Can not get ibus-daemon's address. 
IBusInputContext::createInputContext: no connection to ibus-daemon

หากต้องการลบข้อความเหล่านี้ให้เปลี่ยนเส้นทางสตรีมเอาต์พุตข้อผิดพลาดไปที่/dev/null:

kate filename 2>/dev/null

หากคุณต้องการใช้เทอร์มินัลต่อไปให้เพิ่ม&คำสั่ง after:

kate filename 2>/dev/null &

หากคุณต้องการedit filenameเปิดเพื่อเปิดมันคุณสามารถสร้างฟังก์ชั่นทุบตีใน~/.bashrcไฟล์ของคุณ เพิ่มรหัสถัดไปใน~/.bashrcไฟล์ของคุณ:

edit() { kate "$@" 2>/dev/null & }

นี่เข้าใกล้สิ่งที่ฉันกำลังมองหา ขอบคุณสำหรับการรันคำสั่งและดูปัญหาที่จะเกิดขึ้นกับวิธีแก้ไขปัญหาที่ชัดเจนที่สุด ผมคิดว่าสิ่งที่ผมจะทำคือการสร้างคำสั่งใหม่ซึ่งผมก็สามารถเรียกว่าเป็นการเรียกใช้ทั้งหมดedit filename kate filename 2>/dev/null &
Juan A. Navarro

1
@ Juan: ฉันได้เพิ่มตัวอย่างสำหรับการทำเช่นนั้น $@เป็นสิ่งจำเป็นในกรณีที่คุณต้องผ่านตัวเลือกเพิ่มเติมเช่นหมายเลขบรรทัด edit filename linenumberเป็นทางเลือกให้คุณสามารถปรับแต่งฟังก์ชั่นนี้เพื่อสนับสนุนการ
Lekensteyn

คุณมีข้อบกพร่องในคำตอบของคุณและฉันไม่สามารถแก้ไขได้ คุณลืมเครื่องหมายคำพูดรอบ ๆ$@(ควรเป็น"$@") ซึ่งหมายความว่าสคริปต์ของคุณจะล้มเหลวด้วยชื่อไฟล์ที่มีช่องว่าง
Scott Severance

18

คุณสามารถเปิด (ขึ้นอยู่กับความรู้ของฉัน) บรรณาธิการใด ๆ เช่นนี้:

NAME_OF_EDITOR FILENAME

gedit filename(Ubuntu)
kate filename(Kubuntu)
bluefish filename
kwrite filename
libreoffice filename

คุณสามารถเปิดหน้าเว็บในลักษณะเดียวกัน
firefox filename.html
chrome filename.html
banshee filename.oggหรือ. mp3

คุณสามารถดูแนวโน้มได้ที่นี่ ..


จริงๆแล้วมันควรจะเป็นgedit filename &อย่างอื่นมินัลยังคงใช้ไม่ได้ สิ่งเดียวกันนี้เกิดขึ้นกับkateแม้ว่า&จะทำให้เทอร์มินัลใช้งานไม่ได้เพราะมันเริ่มพ่นข้อมูล debug (หรืออะไรก็ตาม) ไปยังเทอร์มินัล มีวิธีการหลีกเลี่ยง&ในที่สุดหรือไม่? ฉันจะทำด้วยeditจาก TextWrangler?
Juan A. Navarro

ไม่เป็นไรคำตอบจากLekensteynคือ (อย่างน้อยก็ใกล้เคียง) กับสิ่งที่ฉันกำลังมองหา
Juan A. Navarro

1
จริงคุณสามารถเพิ่ม&หรือเพิ่ม2> / dev / nullลงในมันเพื่อไม่ให้เกิดข้อผิดพลาดของเอาต์พุตและเนื้อหาในคอนโซลหากคุณต้องการใช้ต่อไป
Luis Alvarado

3

หากคุณต้องการใช้คำสั่งeditใน Ubuntu เพราะคุณคุ้นเคยกับการทำเช่นนั้นคุณสามารถกำหนดนามแฝงสำหรับโปรแกรมแก้ไขที่คุณชื่นชอบเช่น Kate:

alias edit='kate'

ในการทำให้ผู้รับอนุญาตนามแฝงนี้เพียงเพิ่มบรรทัด~/.bash_aliasesนี้


2

หากคุณไม่มีสภาพแวดล้อมกราฟิกใด ๆ และคุณกำลังทำงานบนคอนโซลคุณสามารถใช้:

vim foo.txt
nano bar.txt
pico foo.html
emacs bar.xml
...

และตรงข้ามกับคำตอบแรก ..


1
"emacs -nw" หรือ "xemacs -nw" ถ้าคุณต้องการ VT100 (x) emacs แม้ในสภาพแวดล้อมแบบหน้าต่าง
barrycarter

1

คุณสามารถใช้คำสั่ง CLI สำหรับโปรแกรมแก้ไขที่ต้องการเพื่อเปิดและแก้ไขไฟล์ตัวอย่างเช่นgeditใน gnome หรือkateใน KDE

เพียงพิมพ์:

kate filename

เพื่อเปิดไฟล์ในเคท


1

บางครั้งฉันใช้เทอร์มินัลคลาสสิคที่ mcedit เป็นเครื่องมือแก้ไขที่ฉันต้องการและมักจะชอบผ่านหมายเลขบรรทัดเพื่อแก้ไขโปรแกรม / สคริปต์

ในการโทรหาพวกเขาอย่างสม่ำเสมอedit source.sh 123ฉันได้เขียนสคริปต์นี้ซึ่งฉันวางไว้เป็น 'แก้ไข' ในเส้นทาง:

#!/bin/bash
#   - edit a file using mcedit or gedit, depending on X11 or console invoking.
#   - jump to specified line, if any.

Xedit=/usr/bin/gedit

if [[ $TERM = "linux" ]]; then
    if [ $# -eq 1 ]; then
        mcedit $1
        else if [ $# -eq 2 ]; then
#           echo "edit invoked\t/usr/bin/mcedit +$2 $1" >> /tmp/edit.log
            /usr/bin/mcedit +$2 $1
            else if [ $# -eq 0 ]; then
                /usr/bin/mcedit
            fi
        fi
    fi
    else if [[ $TERM = "xterm" ]]; then
        # scheint nicht zu helfen
        # LANGUAGE=C
        export LC_ALL=C
        if [ $# -eq 1 ]; then
            $Xedit $1
            else if [ $# -eq 2 ]; then
#               echo "edit invoked\t/usr/bin/scite -open:$1 -goto:$2" >> /tmp/edit.log
                # $Xedit -open:$1 -goto:$2
                $Xedit +$2 $1 
                else if [ $# -eq 0 ]; then
                    $Xedit
                fi
            fi
        fi
    fi
fi

ใช้ดูคำแนะนำการแก้ปัญหาเก่าจากเมื่อฉันใช้ scite ไม่ใช่ gedit เป็นตัวแก้ไขกราฟิก

บางอย่างที่ใช้งานไม่ได้กำลังเปิดไฟล์หลายไฟล์ดังนี้:

 edit *.html

หากมีไฟล์ html มากกว่าหนึ่งไฟล์ดังนั้นรูปแบบจะขยายเป็นหลายไฟล์

การร้องขอที่ถูกต้องคือ:

 edit 
 edit foofile 
 edit foofile 123

จาก X หรือเทอร์มินัล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.