เหตุใดการตั้งค่า 'mi' ใน LS_COLORS เอฟเฟกต์ postgresql และ python จึงเสร็จสมบูรณ์
ดังนั้นฉันจึงมีการLS_COLORS
ตั้งค่าแบบกำหนดเองและในนั้นฉันมีสิ่งต่อไปนี้:
mi=05;01;33:
or=05;01;33:
mi
มีไว้สำหรับไฟล์ที่หายไปในคอลัมน์ด้านขวาเมื่ออยู่ในมุมมองรายการของ ls และor
สำหรับไฟล์ที่หายไปในโหมด ls ปกติหรือทางด้านซ้ายในโหมดรายการ ด้านบนตั้งค่าให้แฟลชทั้งสองเป็นสีเหลืองสว่าง ฉันตั้งค่าแบบนั้นเพราะฉันคิดว่าการมีแฟลชจะเป็นวิธีที่ชัดเจนที่สุดในการแจ้งเตือนตัวเองว่าลิงก์หายไปซึ่งใช้งานได้ดี
แต่ปัญหาคือเมื่อผมทำงานหลามในโหมดโต้ตอบและขอให้เสร็จสิ้นแท็บเช่นนั้นimport re
re.[tab key]
แทนที่จะได้รับรายการปกติสิ่งที่อยู่mi
ในLS_COLORS
จะถูกนำไปใช้กับคำแนะนำ ดังนั้นฉันจึงจบลงด้วยหน้าจอที่เต็มไปด้วยข้อความกะพริบซึ่งทำให้ไม่สามารถอ่านเส้นขอบได้ในอัตราที่สมเหตุสมผล
สิ่งเดียวกันนี้เกิดขึ้นเมื่อฉันใช้การเติมแท็บในคอนโซลโหมดโต้ตอบ postgresql เหมือนกับ python ทุกประการ โปรแกรมอื่น ๆ ส่วนใหญ่หรือที่คล้ายกันนั้นใช้ได้ดีและการทำ bash ก็ใช้ได้
โปรแกรมเหล่านี้ใช้ls
เพื่อจัดรูปแบบผลลัพธ์หรือไม่ ตอนนี้ฉันเพิ่งเปลี่ยนmi
กลับไปเป็นอย่างอื่นเพื่อแก้ไขปัญหาและมันก็ไม่สำคัญเพราะฉันยังเห็นลิงก์ที่ใช้งานor
ไม่ได้ผ่านทาง. แต่ฉันอยากรู้จริงๆว่าทำไมสิ่งนี้จึงเกิดขึ้นและถ้าฉันสามารถหยุดมันได้
คำตอบ
กำลังใช้ GNU readlineซึ่งสามารถยืนยันได้โดยการแสดงรายการโมดูลเริ่มต้น :
$ python3
>>> import sys
>>> sys.modules.keys()
dict_keys([...,'readline', 'atexit', 'rlcompleter'])
Readline LS_COLORS
โดยการเปิดของการใช้งาน จากman 3 readline
,
color-stats (ปิด)
หากตั้งค่าเป็นเปิด readline จะแสดงความสมบูรณ์ที่เป็นไปได้โดยใช้สีที่ต่างกันเพื่อระบุประเภทไฟล์ คำจำกัดความของสีนำมาจากค่าของตัวแปรสภาพแวดล้อม LS_COLORS
หากคุณไม่มั่นใจให้กลับไปที่เซสชัน python แบบโต้ตอบและพิมพ์
>>> a<TAB><TAB>
abs( all( and any( as ascii( assert async await
>>> import readline
>>> readline.parse_and_bind("set colored-stats off")
>>> a<TAB><TAB>
abs( all( and any( as ascii( assert async await
หลังจากที่ปิดการใช้งานสีสถิติที่สำเร็จปัญหา ( bs(
, ll(
ฯลฯ ) ควรจะอยู่ในสีปกติของสถานี คำนำหน้าa
ยังคงสืบทอดสีจากLS_COLORS
และคุณสามารถปิดการใช้งานได้ด้วย
readline.parse_and_bind("set colored-completion-prefix off")