Cara memasukkan karakter non-ascii menggunakan kode heks atau oktal di vi

33

Saya mencoba menulis pustaka golf untuk catatan tambahan. Tapi itu perlu diringkas sendiri. Jadi saya butuh cara yang nyaman untuk mengetik byte acak dalam sebagian besar teks ascii.

Saya tahu ini dapat dengan mudah dilakukan dengan bahasa pemrograman apa pun, tetapi bisakah saya melakukannya secara vi? ( :help octaltidak membantu).

Sunting: Inilah pustaka golf yang dihasilkan untuk nota tambahan . Untungnya, saya menyadari sejak awal bahwa bermain golf di perpustakaan itu sendiri adalah ide yang bodoh dan saya tidak melakukannya.

luser droog
sumber
7
Jika Vim tersedia, ini mungkin membantu
sr

Jawaban:

15

Saya berasumsi bahwa Anda menggunakan vim, karena merupakan perintah vim. Pada beberapa sistem hanyalah symlink yang menjalankannya dalam mode vi-compatible. :helpoctalvivim

Dalam vim:

  • Anda dapat memasukkan karakter unicode dari bidang multibahasa dasar yang dapat Anda gunakan:
    Tekan ctrl+ vdan kemudian masukkan empat kode hex kode unicode.
  • Pilihan lain adalah digraf. Anda dapat membaca lebih lanjut tentang mereka dalam vimbantuan ( help: dig).
    Tekan ctrl+ kdan kemudian urutan dua karakter.
    Anda dapat membuat daftar urutan yang didukung dalam perintah vim usig Anda :digraph.

Dalam nvi, vi dan di tempat lain:

  • Ctrl+ Shiftdan tekan Ulalu masukkan kode hex unicode.
Alex Bolotov
sumber
3
Saya pikir itu Ctrl+Vuntuk memasukkan angka desimal , jika tidak diikuti olehx
3
@Carlos benar. Jawaban ini salah. Jawaban Alan sudah benar.
malan
60
:help i_CTRL-V_digit

Dalam mode insert, ketik Ctrl+ Vdiikuti oleh

  • angka desimal (0-255)
  • o kemudian angka oktal (o0-o377, yaitu, 255 adalah nilai maksimum)
  • x kemudian nomor hex (x00-xFF, yaitu, 255 adalah nilai maksimum)
  • u kemudian urutan Unicode 4-hexchar
  • U kemudian urutan Unicode 8-hexchar

Angka desimal dan oktal dibatasi hingga tiga digit. Angka desimal kurang dari 100 dapat mencakup angka nol di depan, yang diabaikan. Angka oktal kurang dari 100 oktober (mis., 64) dapat mencakup angka nol di depan, tetapi angka tersebut tidak diperlukan. Angka oktal yang lebih besar dari atau sama dengan 100 oktober mungkin tidak menyertakan angka nol di depan (tetapi Anda bisa mengetik angka di depan ojika Anda mau).

Anda dapat mengakhiri nomor dengan mengetik karakter yang bukan digit yang valid untuk radix itu. Sebagai contoh,

  • Ctrl+ V    065 →  A.
  • Ctrl+ V    65B →  Ab.
  • Ctrl+ Vo041 →  !.
  • Ctrl+ Vo419 →  !9.

Nomor hex reguler (satu-oktet) dibatasi hingga dua digit. Seperti di atas, Anda dapat mengulangi karakter radix (misalnya,  Ctrl+ Vuu0041 →  A) untuk karakter yang ditentukan oleh kode hex.  o dan  xcase-insensitive.

Alan
sumber
Untuk menambahkan beberapa tips: angka desimal harus antara 0-255. Nomor hex antara x00-xFF.
wisbucky
ascii esaple adalah ctrl + v x1b(untuk urutan warna ascii)
ThorSummoner
1
Pengingat bahwa jika Anda berada di Windows dan memetakan kembali Ctrl + V untuk menempel, Anda dapat menggunakan Ctrl + Q dalam mode Sisipkan di tempatnya. Lihat stackoverflow.com/questions/426896/…
Chris R. Donnelly