ฉันรู้อยู่แล้วว่าvim -b
ขึ้นอยู่กับสถานที่ที่ใช้มันจะแสดงอักขระหลายไบต์ (เช่น UTF-8) เป็นตัวอักษรเดียว
ฉันvim
จะขอให้แสดงเฉพาะอักขระที่พิมพ์ได้ของ ASCII และจัดการกับส่วนที่เหลือเป็นข้อมูลไบนารีไม่ว่าจะเป็นชุดอักขระหรือไม่
ฉันรู้อยู่แล้วว่าvim -b
ขึ้นอยู่กับสถานที่ที่ใช้มันจะแสดงอักขระหลายไบต์ (เช่น UTF-8) เป็นตัวอักษรเดียว
ฉันvim
จะขอให้แสดงเฉพาะอักขระที่พิมพ์ได้ของ ASCII และจัดการกับส่วนที่เหลือเป็นข้อมูลไบนารีไม่ว่าจะเป็นชุดอักขระหรือไม่
คำตอบ:
เมื่อใช้vim -b
งานจะแสดงอักขระสูงทั้งหมดเป็น<xx>
:
set encoding=latin1
set isprint=
set display+=uhex
การเข้ารหัสไบต์เดียวใด ๆ จะทำงานได้ vim ใช้ ASCII สำหรับ chars ที่ต่ำกว่าทั้งหมดและมีการเข้ารหัสแบบฮาร์ดให้พิมพ์ได้ การตั้งค่าisprint
ว่างเปล่าจะทำเครื่องหมายทุกอย่างอื่นว่าไม่ใช่พิมพ์ การตั้งค่าuhex
จะแสดงผลเป็นเลขฐานสิบหก
นี่คือวิธีที่หน้าจอเปลี่ยนหลังจากแต่ละคำสั่ง:
set encoding=latin1|set isprint=|set display+=uhex
ดูเหมือนว่าสิ่งที่คุณกำลังมองหา เคล็ดลับนี้จากvim
วิกิพีเดียชื่อ: บังคับ UTF-8 เป็นกลุ่มที่จะอ่าน Latin1 เป็น Latin1
$ vim -c "e ++enc=latin1" file.txt
นอกจากนี้จากvim
's :help
คุณสามารถทำเช่นนี้เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับการเข้ารหัส
:help enc
ตัดตอนมาจาก :help enc
'encoding' 'enc' string (default: "latin1" or value from $LANG)
global
{only available when compiled with the +multi_byte
feature}
{not in Vi}
Sets the character encoding used inside Vim. It applies to text in
the buffers, registers, Strings in expressions, text stored in the
viminfo file, etc. It sets the kind of characters which Vim can work
with. See encoding-names for the possible values.
NOTE: Changing this option will not change the encoding of the
existing text in Vim. It may cause non-ASCII text to become invalid.
It should normally be kept at its default value, or set when Vim
starts up. See multibyte. To reload the menus see :menutrans.
This option cannot be set from a modeline. It would most likely
corrupt the text.
NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to
"utf-8". Although care has been taken to allow different values of
'encoding', "utf-8" is the natural choice for the environment and
avoids unnecessary conversion overhead. "utf-8" has not been made
the default to prevent different behavior of the GUI and terminal
versions, and to avoid changing the encoding of newly created files
without your knowledge (in case 'fileencodings' is empty).
...
...
vim
แสดงเฉพาะอักขระที่พิมพ์ได้ของ ASCII" และโซลูชันของคุณใช้ชุดอักขระ latin1 (นั่นคือ ISO-8859-1, ชุดอักขระ ASCII) ซึ่งจะแสดงอักขระเช่นé
ที่ฉัน ' d <e9>
ค่อนข้างชอบที่จะแสดงเป็น
-b
ที่เพิ่งจะตั้งค่าตัวเลือกอื่น ๆ:help edit-binary
ไม่กี่ดู ฉันไม่เห็นความแตกต่างในวิธีที่ไบต์ที่ไม่สามารถพิมพ์ได้แสดงให้เห็น (มันแสดง NUL โดยไม่-b
ปกติ) ฉันส่วนใหญ่ไม่ได้ใช้-b
เพราะฉันใช้ตัวเลือกเหล่านี้เพื่อตรวจสอบการเข้ารหัสแปลก ๆ ในไฟล์ข้อความ