Cách nhập các ký tự không phải mã ascii bằng mã hex hoặc bát phân trong vi


33

Tôi đang cố gắng viết một thư viện chơi gôn cho phần tái bút. Nhưng nó cần phải được cô đọng chính nó. Vì vậy, tôi cần một cách thuận tiện để nhập các byte tùy ý trong văn bản chủ yếu là ascii.

Tôi biết điều này có thể dễ dàng được thực hiện với hoàn toàn bất kỳ ngôn ngữ lập trình nào, nhưng tôi có thể thực hiện bằng vi không? ( :help octalkhông giúp được gì).

Chỉnh sửa: Đây là thư viện golf kết quả cho postcript . May mắn thay, tôi nhận ra sớm rằng chơi golf thư viện là một ý tưởng ngu ngốc và tôi đã không làm điều đó.


7
Nếu Vim có sẵn, điều này có thể giúp
sr_

Câu trả lời:


15

Tôi giả sử rằng bạn sử dụng vim, bởi vì đó là lệnh của vim. Trên một số hệ thống chỉ là một liên kết tượng trưng để chạy nó ở chế độ tương thích vi. :helpoctalvivim

Trong vim:

  • Bạn có thể nhập các ký tự unicode từ mặt phẳng đa ngôn ngữ cơ bản mà bạn có thể sử dụng:
    Nhấn ctrl+ vvà sau đó nhập mã unicode hex bốn chữ số.
  • Một lựa chọn khác là máy in. Bạn có thể đọc thêm về họ trong vimtrợ giúp ( help: dig).
    Nhấn ctrl+ kvà sau đó hai chuỗi ký tự.
    Bạn có thể liệt kê các chuỗi được hỗ trợ trong lệnh vim usig của bạn :digraph.

Trong nvi, vi và các nơi khác:

  • Ctrl+ Shiftvà nhấn Uvà sau đó nhập mã hex unicode.

3
Tôi nghĩ rằng đó Ctrl+Vlà để nhập các chữ số thập phân , nếu không được theo sau bởix

3
@Carlos là chính xác. Câu trả lời này là sai. Câu trả lời của Alan là chính xác.
malan

60
:help i_CTRL-V_digit

Trong chế độ chèn, gõ Ctrl+ Vtheo sau

  • một số thập phân (0-255)
  • o sau đó một số bát phân (o0-o377, nghĩa là 255 là giá trị tối đa)
  • x sau đó một số hex (x00-xFF, nghĩa là 255 là giá trị tối đa)
  • u sau đó là một chuỗi Unicode 4-hexar
  • U sau đó là một chuỗi Unicode 8-hexar

Số thập phân và số bát phân được giới hạn trong ba chữ số. Số thập phân nhỏ hơn 100 có thể bao gồm các số 0 đứng đầu, được bỏ qua. Số bát phân nhỏ hơn 100 oct (tức là 64) có thể bao gồm các số 0 đứng đầu, nhưng chúng không bắt buộc. Số bát phân lớn hơn hoặc bằng 100 oct có thể không bao gồm các số 0 đứng đầu (nhưng bạn có thể nhập một số hàng đầu onếu bạn muốn).

Bạn có thể chấm dứt một số bằng cách nhập một ký tự không phải là chữ số hợp lệ cho cơ số đó. Ví dụ,

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

Các số hex thông thường (một octet) được giới hạn ở hai chữ số. Cũng như ở trên, bạn có thể lặp lại ký tự cơ số (ví dụ:  Ctrl+ Vuu0041 →  A) cho các ký tự được chỉ định bởi mã hex.  o và  xkhông phân biệt chữ hoa chữ thường.


Để thêm một số mẹo: số thập phân phải nằm trong khoảng 0-255. Số hex giữa x00-xFF.
wvducky

ascii esaple là ctrl + v x1b(đối với chuỗi màu ascii)
ThorSummoner

1
Một lời nhắc rằng nếu bạn đang ở trong Windows và đã ánh xạ lại Ctrl + V để Dán, bạn có thể sử dụng Ctrl + Q trong chế độ Chèn ở vị trí của nó. Xem stackoverflow.com/questions/426896/ Mạnh
Chris R. Donnelly
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.