วิธีป้อนอักขระที่ไม่ใช่ ASCII โดยใช้รหัสฐานสิบหกหรือฐานแปดใน vi


33

ฉันกำลังพยายามเขียนห้องสมุดสำหรับตีกอล์ฟ แต่จะต้องย่อตัวเอง ดังนั้นฉันต้องการวิธีที่สะดวกในการพิมพ์ไบต์โดยพลการภายในข้อความ ASCII ส่วนใหญ่

ฉันรู้ว่าสิ่งนี้สามารถทำได้อย่างง่ายดายด้วยภาษาการเขียนโปรแกรมใด ๆ แต่ฉันสามารถทำได้ใน vi? ( :help octalไม่มีความช่วยเหลือ)

แก้ไข:นี่คือที่เกิดห้องสมุดกอล์ฟสำหรับ ป.ล. โชคดีที่ฉันรู้ตั้งแต่เนิ่น ๆ ว่าการเล่นกอล์ฟในห้องสมุดนั้นเป็นความคิดที่โง่และฉันก็ไม่ได้ทำเช่นนั้น


7
ถ้าเป็นกลุ่มพร้อมใช้งานสิ่งนี้อาจช่วยได้
sr_

ที่เกี่ยวข้อง: unix.stackexchange.com/questions/108020/ …
luser droog

คำตอบ:


15

ฉันคิดว่าคุณใช้vimเพราะเป็นคำสั่งของกลุ่ม ในบางระบบเป็นเพียง symlink ที่ทำงานในโหมดที่รองรับ vi :helpoctalvivim

ในกลุ่ม:

  • คุณสามารถป้อนอักขระยูนิโค้ดได้จากระนาบหลายภาษาพื้นฐานที่คุณสามารถใช้ได้:
    กดctrl+ vแล้วป้อนรหัสยูนิโค้ดฐานสิบสี่หลัก
  • อีกทางเลือกหนึ่งคือ digraphs คุณสามารถอ่านเพิ่มเติมเกี่ยวกับพวกเขาได้ในvimความช่วยเหลือของ ( help: dig)
    กดctrl+ kจากนั้นตามด้วยอักขระสองตัว
    คุณสามารถแสดงรายการลำดับที่ได้รับการสนับสนุนในคำสั่ง usig :digraphคุณ

ใน nvi, vi และที่อื่น ๆ :

  • Ctrl+ ShiftและกดUแล้วใส่รหัสฐานสิบหก Unicode

3
ฉันคิดว่านั่นCtrl+Vเป็นการป้อนตัวเลขทศนิยมหากไม่ได้ตามมาด้วยx

3
@Carlos ถูกต้อง คำตอบนี้ผิด คำตอบของอลันนั้นถูกต้อง
malan

60
:help i_CTRL-V_digit

ในโหมดแทรกให้พิมพ์Ctrl+ Vตามด้วย

  • ตัวเลขทศนิยม (0-255)
  • o ดังนั้นตัวเลขฐานแปด (o0-o377 คือ 255 คือค่าสูงสุด)
  • x ดังนั้นตัวเลขฐานสิบหก (x00-xFF คือ 255 คือค่าสูงสุด)
  • u ตามด้วยลำดับ Unicode 4-hexchar
  • U จากนั้นลำดับ Unicode 8-hexchar

ตัวเลขทศนิยมและฐานแปดถูก จำกัด ไว้ที่สามหลัก ตัวเลขทศนิยมน้อยกว่า 100 อาจรวมศูนย์นำหน้าซึ่งจะถูกละเว้น ตัวเลขฐานแปดน้อยกว่า 100 ตุลาคม (เช่น 64) อาจรวมศูนย์นำหน้า แต่ไม่จำเป็น หมายเลขฐานแปดที่มากกว่าหรือเท่ากับ 100 oct อาจไม่รวมศูนย์นำหน้า (แต่คุณอาจพิมพ์หมายเลขนำหน้าoหากคุณต้องการ)

คุณสามารถยุติตัวเลขด้วยการพิมพ์อักขระที่ไม่ใช่ตัวเลขที่ถูกต้องสำหรับเลขฐานนั้น ตัวอย่างเช่น,

  • Ctrl+ →V    065A
  • Ctrl+ →V    65BAb
  • Ctrl+ →Vo041!
  • Ctrl+ →Vo419!9

เลขฐานสิบหกปกติ (หนึ่งแปด octet) ถูก จำกัด ไว้ที่สองหลัก เช่นเดียวกับข้างต้นคุณสามารถทำซ้ำอักขระฐาน (เช่น  Ctrl+ Vuu0041 →  A) สำหรับอักขระที่ระบุโดยรหัสฐานสิบหก  o และ  xไม่คำนึงถึงขนาดตัวพิมพ์


วิธีเพิ่มเคล็ดลับเพิ่มเติม: ตัวเลขทศนิยมต้องอยู่ระหว่าง 0-255 ตัวเลขฐานสิบระหว่าง x00-xFF
wisbucky

ascii esaple คือ ctrl + v x1b(สำหรับลำดับสี ascii)
ThorSummoner

1
คำเตือนว่าหากคุณอยู่ใน Windows และตั้งค่า Ctrl + V เป็น Paste ใหม่คุณสามารถใช้ Ctrl + Q ในโหมดแทรกแทน ดูstackoverflow.com/questions/426896/…
Chris R. Donnelly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.