Score:1

ขั้ว XFCE - เปลี่ยนสีของพรอมต์อินพุต สกรูสายอินพุต

ธง de

คำถามนี้เป็นผลสืบเนื่องจากคำตอบของคำถามนี้ เกี่ยวกับการเปลี่ยนสีของข้อความแจ้งผู้ใช้ในเทอร์มินัล XFCE: เทอร์มินัล Ubuntu (Xfce): ทำให้คำสั่งอินพุตมีสีตัวอักษรที่แตกต่างจากข้อความเอาต์พุต

เนื่องจากฉันไม่ได้รับอนุญาตให้แสดงความคิดเห็นที่นั่น (ชื่อเสียงขั้นต่ำ 50) ฉันจึงต้องเปิดคำถามใหม่

ตามคำตอบฉันใช้คำสั่งต่อไปนี้:

PS1='\e[1;36m\u@\h \W]\$\e[0m '

ซึ่งจะทำให้รูปแบบเหมือนกับค่าเริ่มต้น แต่เปลี่ยนสีเป็นสีฟ้าตามที่คาดไว้

อย่างไรก็ตาม ฉันเริ่มมีพฤติกรรมแปลกๆ บางครั้งเคอร์เซอร์จะกระโดดกลับไปที่บรรทัดอินพุต และบางครั้งก็จะแสดงข้อความเก่าที่ไม่ควรมี บางครั้งก็แยกเป็นสองบรรทัดที่ผมพิมพ์ต่อในบรรทัดข้างบน ตัวอย่างเช่น:

พูดว่าฉันต้องการทำ:

$ cd /some/path/to/a/ไดเรกทอรี

แต่พอพิมพ์กลายเป็นว่า

$ cd /some/pa/directoryath/to

ถ้าพิมพ์ enter ก็ยังอ่านคำสั่งได้ถูกต้อง แค่แสดงผลก็ผิดแล้ว เมื่อมันเกิดขึ้น ถ้าฉันพยายามใช้ backspace มันจะกลายเป็นแบบนี้:

$ cd /some/pa/directoryath/to
$ cd /some/pa/directo
$ cd /some/pa -------- ณ จุดนี้ ฉันไม่สามารถลบสิ่งอื่นใดได้
                           ในการแสดงอักขระบางตัวยังคงอยู่ 
                           เอ้อระเหย แต่ถ้าฉันพิมพ์ enter ไม่มีอะไรในบรรทัดอินพุต

อีกตัวอย่างหนึ่ง สมมติว่าฉันมีสิ่งต่อไปนี้ปรากฏขึ้น:

$ ล
โฟลเดอร์1 โฟลเดอร์2 โฟลเดอร์3 โฟลเดอร์4

และตอนนี้ฉันต้องการพิมพ์คำสั่งอื่น สิ่งต่อไปนี้อาจเกิดขึ้น:

$ ล
โฟลเดอร์1 โฟลเดอร์2 โฟลเดอร์3 โฟลเดอร์
$ cd /some/path/to/a/di

อีกครั้งถ้าฉันพิมพ์อินพุตจะรับรู้อย่างถูกต้อง แต่จอแสดงผลเสีย

ปัญหานี้เกิดขึ้นบ่อยที่สุด แต่ไม่ใช่เฉพาะเมื่อฉันพิมพ์ลูกศรขึ้นเพื่อรับคำสั่งก่อนหน้า หรือเมื่อบรรทัดอินพุตเข้าใกล้ขอบด้านขวาของหน้าต่าง

sudodus avatar
jp flag
ฉันคิดว่าปัญหาของคุณเกิดจากวิธีการตีความลำดับ ANSI และโต้ตอบกับวิธีอื่นในการสื่อสารกับอินเทอร์เฟซบรรทัดคำสั่งฉันสังเกตเห็นว่าบั๊กจะทำให้เกิดปัญหา เช่น เมื่อคุณมีบรรทัดคำสั่งยาว ซึ่งจะไปถึงขอบด้านขวาของหน้าต่าง/หน้าจอและถูกรวมไว้ - ฉันใช้วิธีนี้เพื่อรับพรอมต์สีและฉันอยู่กับปัญหาเพราะการมีพรอมต์สีช่วยได้มาก
bjorn avatar
de flag
ถ้ามันเกิดขึ้นระหว่างการห่อฉันก็สามารถอยู่กับมันได้ แต่อย่างที่เป็นอยู่ตอนนี้ เกือบทุกครั้งที่ฉันใช้ปุ่มขึ้น มันจะหยุดทำงาน และทุกๆ คำสั่งที่สิบหรือมากกว่านั้น ซึ่งเป็นคำสั่งสั้นๆ ก็จะมีปัญหาเช่นกัน ณ ตอนนี้ น่าเสียดายที่มันไม่สามารถใช้งานได้สำหรับฉัน... อย่างไรก็ตาม หากเป็นบั๊ก ฉันเดาว่าวิธีที่ถูกต้องคือยื่นรายงานบั๊ก
sudodus avatar
jp flag
คุณใช้ Ubuntu, bash และ terminal emulator เวอร์ชันใด คุณลองใช้โปรแกรมจำลองเทอร์มินัลอื่นแล้วหรือยัง
Score:0
ธง jp

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

โปรดลองอันนี้ที่ฉันใช้

ถ้า [ "$USER" = ราก ]; แล้ว
    PS1='\[\033[01;31m\]$(statstring)\[\033[00m\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h \[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] \$ '
อื่น
    PS1='\[\033[01;31m\]$(statstring)\[\033[00m\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h \[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] \$ '
ไฟ

และถ้าใช้งานได้ คุณสามารถใส่ลงใน ~/.bashrc อย่างน้อยสำหรับเชลล์แบบโต้ตอบ ฉันใช้

กรณี "$TERM" ใน
xterm-สี)
....

เพื่อตัดสินใจว่าจะใช้เมื่อใด และคุณอาจตรวจสอบบางอย่างที่ตรงกับการตั้งค่าของคุณ


แก้ไข: เพิ่มฟังก์ชั่นเพื่อสร้าง สถิติ ก่อนที่คุณจะตั้งค่าพรอมต์ ~/.bashrc

สถานะของฟังก์ชัน {
RC=$?
  ถ้า [ "0" != $RC ]; แล้ว
    พิมพ์f "[$RC] "
  ไฟ
}
bjorn avatar
de flag
ขอขอบคุณ! ฉันต้องลบ $(statstring) แต่ตอนนี้ดูเหมือนว่าจะทำงานตามที่คาดไว้ อะไรคือสาเหตุของปัญหาในความพยายามครั้งแรกของฉัน n.b. ฉันประสบปัญหาเดียวกันกับคำแนะนำในคำถามที่เชื่อมโยงเช่นกัน
sudodus avatar
jp flag
ฉันไม่แน่ใจว่าเหตุใดพรอมต์เก่าของคุณจึงผิดพลาด มันแตกต่างจากของฉันในตอนท้าย (ลำดับระหว่างอักขระ $ และลำดับ ANSI) อาจเป็นสาเหตุที่ทำให้ผิดพลาด นอกจากนี้ ลำดับ ANSI ยังแตกต่างกันเล็กน้อย ซึ่งอาจสร้างผลลัพธ์ที่แตกต่างกัน -- โปรดแก้ไขคำตอบแล้วลองใช้ `statstring`
Score:0
ธง cn

คุณต้องใส่ลำดับหลีกของเทอร์มินัล และเฉพาะระหว่างนั้น \[ และ \].

ดูใน ทุบตีหน้าคู่มือภายใต้ส่วน "แจ้ง"

แทน

PS1='\e[1;36m\u@\h \W]\$\e[0m '

คุณควรเขียน

PS1='\[\e[1;36m\]\u@\h \W]\$\[\e[0m\] '

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา