유니코드 문자 입력하기
유니코드 문자 입력하기 (unicode_entry)
터미널·셸·편집기에서 유니코드 문자를 입력하는 방법을 다루는 문서예요.
Raku는 유니코드 문자를 변수 이름으로 쓸 수 있어요. 많은 연산자(특히 집합/가방 연산자)와 일부 따옴표 구성도 유니코드 기호로 정의돼 있죠. 그래서 이런 기호를 편집기, Raku 셸, 명령행에 어떻게 입력하는지 아는 게 좋아요. 특히 키보드에 실제 문자로 없는 기호라면 더 그렇고요.
각 운영체제·환경에서 유니코드를 입력하는 일반적인 방법은 위키백과의 unicode input 문서를 참고하세요.
XCompose (Linux)
Xorg는 Compose 키를 쓰는 digraph(이중 문자) 입력을 지원해요. 기본값 AltGr + Shift는 Capslock처럼 더 쉬운 키로 바꿀 수 있어요. GNOME 2와 MATE에서는 Preferences → Keyboard → Layouts → Options → Position of Compose Key에서 설정할 수 있어요. 예를 들어 »+«를 입력하려면 CAPSLOCK > > + CAPSLOCK < <처럼 누르면 돼요.
XCompose는 .XCompose 파일로 digraph 시퀀스를 직접 정의할 수 있고, https://github.com/kragen/xcompose/blob/master/dotXCompose는 아주 완성도 높은 예제예요. GNOME은 XCompose를 하드코딩된 목록으로 덮어썼는데, 환경에 GTK_IM_MODULE=xim을 설정하면 XCompose를 복원할 수 있어요. uim-xim 같은 xim 브리지를 설치해야 할 수도 있어요.
모든 프로그램에서 compose 동작시키기
모든 프로그램에서 compose 키가 동작하지 않을 때는 ibus를 시도해 볼 수 있어요.
input_module=xim
export GTK_IM_MODULE=$input_module
export XMODIFIERS=@im=$input_module
export QT_IM_MODULE=$input_module
모든 사용자에게 적용하려면 /etc/profile.d/compose.sh 파일에 넣으면 돼요. GUI 환경마다 환경변수 설정 방식이 달라서 신경 쓸 필요 없으니 이 방법이 가장 쉬워요.
KDE를 쓴다면 이 파일을 ~/.config/plasma-workspace/env/compose.sh에 두면 돼요. 다른 데스크톱 환경은 방식이 달라요. 자기 환경에서 환경변수를 설정하는 방법을 찾아보거나 위의 시스템 전역 방법을 쓰세요.
ibus
xim 입력 모듈로 🐧 같은 높은 코드포인트 기호를 입력하는 데 문제가 있다면 ibus를 쓸 수 있어요. 배포판에 맞는 ibus 패키지를 설치하고, 데스크톱 환경이 로드될 때 시작되도록 설정해야 해요. 실행해야 하는 명령은:
ibus-daemon --xim --verbose --daemonize --replace
--xim을 설정하면 ibus를 쓰지 않는 프로그램도 여전히 xim 입력 방식을 사용할 수 있고 하위 호환도 유지돼요.
XKB (Linux)
X 윈도 시스템은 XKB 확장으로 키보드 이벤트를 받는데, 설정 파일만 있으면 다양한 종류의 키보드 출력을 읽을 수 있어요.
XKB는 다중 레이아웃(multi-layout) 또는 시프트 레벨(shift level) 개념을 제공해요. 예를 들어 a라는 기호는 "A"로 표시된 키의 레벨 1 출력이고, A는 보통 시프트 키로 도달하는 레벨 2 레이아웃에 속해요. 더 많은 레벨이 있는데, 오른쪽 Alt 키(AltGr) 같은 특정 키를 레벨 3 스위치로 설정할 수 있어요. 레벨 3 수정자와 시프트 키를 함께 누르면 레벨 4 레이아웃으로 전환돼요. XKB는 레벨 5 스위치 키도 추가할 수 있어서, 시프트 키와 함께 쓰면 레벨 6 레이아웃으로 전환돼요.
자세한 설명은 이 페이지를 참고하세요.
이 방법의 장점은 일반 키보드로는 거의 입력할 수 없는 문자를, 대문자를 입력하듯 시프트와 다른 키의 조합만으로 입력할 수 있다는 거예요.
단일 사용자 설정
개인 설정에는 .xkb 파일과 symbols 하위 디렉터리의 기호 파일만 만들면 충분해요. .xkb 파일은 이 명령으로 만들 수 있어요.
setxkbmap -print > raku.xkb
이런 파일의 예시가 있죠.
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+raku(raku)+inet(evdev)+level3(ralt_switch)+compose(caps)" };
};
이 파일은 키보드가 만들어내는 키코드와 화면에 표시되는 기호를 선언해요.
여기서는 symbols/raku 파일에 설정이 있는 PC형 키보드인데, 그 안에 여러 변형이 있고 그중 raku라는 이름이 선택됐어요. evdev 범용 입력 이벤트 인터페이스가 이벤트 수집을 관리해요. 이 설정은 오른쪽 Alt 키를 레벨 3 스위치로, Caps Lock을 Compose 키로 사용해요.
설정 파일의 기본 디렉터리(예: $HOME/.config/xkb)를 정하고 raku.xkb를 거기에 둔 다음, symbols 디렉터리를 만들고 키 레이아웃 파일을 넣어야 해요. raku라는 이름의 그런 파일 예시예요:
default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {
name[Group1]= "English (US)";
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore ] };
key <AE12> { [ equal, plus ] };
key <AD01> { [ q, Q ] };
key <AD02> { [ w, W ] };
key <AD03> { [ e, E ] };
key <AD04> { [ r, R ] };
key <AD05> { [ t, T ] };
key <AD06> { [ y, Y ] };
key <AD07> { [ u, U ] };
key <AD08> { [ i, I ] };
key <AD09> { [ o, O ] };
key <AD10> { [ p, P ] };
key <AD11> { [ bracketleft, braceleft ] };
key <AD12> { [ bracketright, braceright ] };
key <AC01> { [ a, A ] };
key <AC02> { [ s, S ] };
key <AC03> { [ d, D ] };
key <AC04> { [ f, F ] };
key <AC05> { [ g, G ] };
key <AC06> { [ h, H ] };
key <AC07> { [ j, J ] };
key <AC08> { [ k, K ] };
key <AC09> { [ l, L ] };
key <AC10> { [ semicolon, colon ] };
key <AC11> { [ apostrophe, quotedbl ] };
key <AB01> { [ z, Z ] };
key <AB02> { [ x, X ] };
key <AB03> { [ c, C ] };
key <AB04> { [ v, V ] };
key <AB05> { [ b, B ] };
key <AB06> { [ n, N ] };
key <AB07> { [ m, M ] };
key <AB08> { [ comma, less ] };
key <AB09> { [ period, greater ] };
key <AB10> { [ slash, question ] };
key <BKSL> { [ backslash, bar ] };
};
partial alphanumeric_keys
xkb_symbols "raku" {
include "raku(basic)"
name[Group1]= "English (raku operators, with AltGr)";
key <TLDE> { [ grave, asciitilde, dead_grave, leftsinglequotemark ] }; //‘
key <AE01> { [ 1, exclam, U00B9 ] }; //¹
key <AE02> { [ 2, at, U00B2 ] }; //²
key <AE03> { [ 3, numbersign, U00B3, U2026 ] }; //³…
key <AE04> { [ 4, dollar, U2074 ] }; //⁴
key <AE05> { [ 5, percent, U2075 ] }; //⁵
key <AE06> { [ 6,asciicircum, U2076 ] }; //⁶
key <AE07> { [ 7, ampersand, U2077 ] }; //⁷
key <AE08> { [ 8, asterisk, U2078, multiply ] }; //⁸×
key <AE09> { [ 9, parenleft, U2079 ] }; //⁹
key <AE10> { [ 0, parenright, U2070 ] }; //⁰
key <AE11> { [ minus, underscore, U2212, U207B ] }; //⁻−
key <AE12> { [ equal, plus, U2261, U207A ] }; //≡⁺
key <BKSL> { [ backslash, bar, U2262, U221E ] }; //≢∞
key <AD03> { [ e, E, EuroSign, U1D452 ] }; //€𝑒
key <AD05> { [ t, T, U03C4, U2296 ] }; //τ⊖
key <AD07> { [ u, U, U222A, U2229 ] }; //∪∩
key <AD09> { [ o, O, U2218 ] }; //∘
key <AD10> { [ p, P, U03C0 ] }; //π
key <AD11> { [ bracketleft, braceleft, U2260, U201E ] }; //≠„
key <AD12> { [ bracketright, braceright, U2245, U201A ] }; //≅‚
key <AC01> { [ a, A, U2208, U2209 ] }; //∈∉
key <AC02> { [ s, S, U220B, U220C ] }; //∋∌
key <AC09> { [ l, L, UFF62, UFF63 ] }; //「」
key <AC10> { [ semicolon, colon, U201C, U201D ] }; //“”
key <AC11> { [apostrophe, quotedbl, rightsinglequotemark ] }; //’
key <AB02> { [ x, X, U2284, U2285 ] }; //⊄ ⊅
key <AB03> { [ c, C, U2282, U2283 ] }; //⊂ ⊃
key <AB05> { [ b, B, U228E, U228D ] }; //⊎⊍
key <AB06> { [ n, N, U269B ] }; //⚛
key <AB08> { [ comma, less, guillemotleft, U2264 ] }; //«≤
key <AB09> { [ period, greater, guillemotright, U2265 ] }; //»≥
key <AB10> { [ slash, question, division, U2216 ] }; //÷∖
include "level3(ralt_switch)"
};
이 파일은 두 개의 레이아웃을 담고 있어요. 첫 번째는 시프트 레벨이 두 개뿐인 US 키보드의 기본 레이아웃이고, 두 번째는 첫 번째를 포함하면서 두 개의 추가 시프트 레벨을 이용해 일부 키에 여러 유니코드 기호를 더한 거예요. 이 파일의 형식은 여기에 문서화돼 있어요.
다른 키보드라면 첫 번째 레이아웃(basic)을 해당 국가 레이아웃에 맞는 것으로 바꿔야 해요. 보통 이런 레이아웃은 /usr/share/X11/xkb/symbols 디렉터리에 있어요. 그다음 두 번째 레이아웃을 해당 언어 키 레이아웃에 맞게 수정하면 돼요.
기본 디렉터리가 $HOME/.config/xkb라면 이 명령으로 새 설정을 로드해요.
xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/raku.xkb $DISPLAY
(정의되지 않은 기호에 대한 경고가 나올 수 있어요.)
이 방법은 침습적이지 않지만, 필요할 때마다 설정 파일을 수동으로 로드해야 해요.
시스템 전역 설정
이 방법의 장점은 시스템 파일을 수정하므로 데스크톱 매니저가 제공하는 평범한 인터페이스로 새 레이아웃을 선택할 수 있고 영구적으로 유지된다는 거예요.
단점은 시스템에 루트 접근 권한이 있어야 하고, 시스템 업그레이드가 레이아웃 파일을 덮어쓸 수 있다는 거예요.
시스템 전역 설정을 수정하려면 자기 언어 매핑을 설명하는 특정 파일을 찾아서 앞 섹션에서 본 raku 부분을 추가해야 해요.
새 레이아웃이 시스템 메뉴에 나타나려면 보통 /usr/share/X11/xkb/rules/evdev.xml에 있는 evdev 규칙 파일에 특정 설명을 추가해야 해요. 자기 언어 키보드 레이아웃에 해당하는 섹션을 찾으세요. 예를 들어 us 레이아웃은 이렇게 시작돼요:
[…]
<layoutList>
<layout>
<configItem>
<name>us</name>
<!-- Keyboard indicator for English layouts -->
<shortDescription>en</shortDescription>
<description>English (US)</description>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
[…]
새로 정의한 변형을 추가해야 해요:
<variant>
<configItem>
<name>raku</name>
<description>raku (Raku operators, with AltGr)</description>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
</variant>
로그아웃 후 다시 로그인하면 레이아웃·변형 목록에 새 변형이 나타날 거예요. 또는 이 명령으로 지금 바로 레이아웃을 로드할 수도 있어요:
setxkbmap -layout us -variant raku
이 명령은 us 키보드의 raku 변형을 다시 로드하지만, 불행히도 다중 키보드 사용 환경에서는 다른 키보드 레이아웃을 비활성화해요.
KDE
KDE를 쓴다면 시작 메뉴를 열고 "Autostart"를 입력해 첫 번째 결과인 Autostart를 클릭하세요. 열린 설정 창에서 Add program을 클릭하고 ibus-daemon을 입력한 다음 OK를 클릭해요. 그다음 팝업 창의 Application 탭으로 가서 Command 필드에 위에 보인 전체 ibus-daemon 명령을, --desktop 옵션은 --desktop=plasma로 해서 입력하고 OK를 클릭해요. 이제 다시 로그인하면 자동으로 시작돼요.
두 키 조합으로 유니코드 문자 입력하기
XCompose 입력 방식을 쓰면 유니코드 문자를 간단한 두 키 조합으로 입력할 수 있어요. Raku에서 쓰는 모든 유니코드 문자를 입력할 수 있게 해주는 설정 예시를 보여드릴게요. 이 예시는 두 Super 키를 모두 dead key로 사용해요. 예를 들어 π 기호를 입력하려면 오른쪽 Super(또는 "Windows") 키를 눌렀다 떼고, 그다음 p 키를 눌렀다 떼면 돼요.
<Super_R> <less> : "«" guillemotleft
<Super_R> <greater> : "»" guillemotright
<Super_R> <minus> : "⁻" U207B
<Super_R> <0> : "⁰" U2070
<Super_R> <1> : "¹" U00B9
<Super_R> <2> : "²" U00B2
<Super_R> <3> : "³" U00B3
<Super_R> <4> : "⁴" U2074
<Super_R> <5> : "⁵" U2075
<Super_R> <6> : "⁶" U2076
<Super_R> <7> : "⁷" U2077
<Super_R> <8> : "⁸" U2078
<Super_R> <9> : "⁹" U2079
<Super_R> <asterisk> : "×" U00D7
<Super_R> <slash> : "÷" U00F7
<Super_R> <E> : "𝑒" U1D452
<Super_R> <p> : "π" U03C0
<Super_R> <t> : "τ" U03C4
<Super_R> <grave> : "‘" U2018
<Super_R> <apostrophe> : "’" U2019
<Super_R> <comma> : "‚" U201A
<Super_R> <colon> : "“" U201C
<Super_R> <quotedbl> : "”" U201D
<Super_R> <L> : "„" U201E
<Super_R> <period> : "…" U2026
<Super_R> <bracketleft> : "≡" U2261
<Super_R> <bracketright> : "≢" U2262
<Super_L> <8> : "∞" U221E
<Super_L> <O> : "∅" U2205
<Super_L> <e> : "∈" U2208
<Super_L> <E> : "∉" U2209
<Super_L> <3> : "∋" U220B
<Super_L> <numbersign> : "∌" U220C
<Super_L> <minus> : "−" U2212
<Super_L> <slash> : "∖" U2216
<Super_L> <o> : "∘" U2218
<Super_L> <U> : "∩" U2229
<Super_L> <u> : "∪" U222A
<Super_L> <asciitilde> : "≅" U2245
<Super_L> <equal> : "≠" U2260
<Super_L> <less> : "≤" U2264
<Super_L> <greater> : "≥" U2265
<Super_L> <c> : "⊂" U2283
<Super_L> <C> : "⊃" U2283
<Super_L> <v> : "⊄" U2284
<Super_L> <V> : "⊅" U2285
<Super_R> <d> : "⊆" U2286
<Super_R> <D> : "⊇" U2287
<Super_R> <f> : "⊈" U2288
<Super_R> <F> : "⊉" U2289
<Super_R> <U> : "⊍" U228D
<Super_R> <u> : "⊎" U228E
<Super_L> <t> : "⊖" U2296
<Super_L> <L> : "「" UFF62
<Super_L> <l> : "」" UFF63
이 줄들을 ~/.XCompose 파일에 추가하면 돼요. 변경을 활성화하려면 X 세션을 나갔다가 다시 로그인해야 해요. Ubuntu Gnome은 Super 키 하나를 자기 용도로 쓰기 때문에 Super_* 키 중 하나(또는 둘 다)를 예를 들어 Meta_R로 바꾸고 싶을 수도 있어요.
WinCompose (Windows)
WinCompose는 Windows에 compose 키 기능을 추가해요. GitHub의 WinCompose releases 페이지나 Chocolatey 패키지 매니저로 설치할 수 있어요.
설치해서 실행하면 트레이 아이콘을 우클릭해 Options → Composing → Behavior → Compose Key를 선택해 원하는 키를 설정하세요.
WinCompose는 Options → Composing → Sequences에서 고를 수 있는 소스가 여러 개예요. XCompose를 켜고 Xorg를 끄는 걸 권장하는데, Xorg가 시퀀스를 제공하지 않는 연산자가 몇 개 있고 Xorg에는 XCompose의 연산자 시퀀스와 충돌하는 시퀀스도 있기 때문이에요. 시퀀스는 트레이 아이콘을 우클릭하고 Show Sequences를 선택하면 볼 수 있어요. 직접 시퀀스를 추가하려면 %USERPROFILE%의 .XCompose를 추가/수정하거나 옵션 메뉴에서 사용자 정의 시퀀스를 편집하면 돼요.
터미널, 셸, 편집기
XTerm
XTerm에서 유니코드 지원은 주로 ~/.Xdefaults에 utf8과 utf8Fonts 옵션을 1로, locale 옵션을 UTF-8로 설정해서 활성화해요. Raku 프로그래밍에 충분한 유니코드 표시를 지원하는 설정 예시예요:
XTerm*faceName: xft:Noto Mono:style=Regular
XTerm*faceNameDoublesize: xft:Noto Emoji:style=Regular
XTerm*faceSize: 10
XTerm*locale: UTF-8
XTerm*titleModes: 16
XTerm*utf8: 1
XTerm*utf8Fonts: 1
XTerm*utf8Title: true
URxvt
XTerm과 비슷하게, URxvt의 유니코드 지원은 주로 ~/.Xdefaults에 locale 옵션을 en_US.UTF-8로 설정해서 활성화해요. Raku 프로그래밍에 충분한 유니코드 표시를 지원하는 설정 예시예요:
URxvt*font: xft:Noto Mono:pixelsize=14:style=Regular,\
xft:Noto Emoji:pixelsize=14:style=Regular
URxvt*letterSpace: -1
URxvt*locale: en_US.UTF-8
URxvt*skipBuiltInGlyphs: true
Unix 셸
bash 셸에서 유니코드 문자는 Ctrl-Shift-u를 누른 다음 유니코드 코드포인트 값을 입력하고 Enter를 눌러 입력해요. 예를 들어 원소-연산자(∈) 문자를 입력하려면 다음 키 조합을 써요(명확성을 위해 공백을 넣었어요):
Ctrl-Shift-u 2208 Enter
Unix 셸에서 raku REPL을 시작했다면 REPL에 유니코드 문자를 입력할 때도 이 방법을 그대로 써요.
Screen
GNU Screen은 digraph 명령이 있지만 digraph 테이블이 꽤 제한적이에요. bindkey와 exec 덕분에 외부 프로그램으로 현재 screen 창에 문자를 넣을 수 있어요.
bindkey ^K exec .! digraphs
이것은 control-k를 셸 명령 digraphs에 묶어요. RFC 1345보다 Raku 친화적인 digraph 테이블을 원한다면 digraphs를 쓰거나 자기 필요에 맞게 바꾸면 돼요.
Vim
Vim에서는 (삽입 모드에서) 먼저 Ctrl-V(또는 ^V)를 누르고, 그다음 u, 그다음 입력할 유니코드 문자의 16진 값을 눌러 유니코드 문자를 입력해요. 예를 들어 그리스 문자 λ(lambda)는 이 키 조합으로 입력돼요:
^Vu03BB
Ctrl-K/^K와 digraph를 함께 써서 일부 문자를 입력할 수도 있어요. digraph로 위와 같은 결과를 내는 대안은 이렇게 생겼어요:
^Kl*
Vim이 제공하는 digraph 목록은 여기에 문서화돼 있고, :digraph 명령으로 직접 추가할 수 있어요.
Vim에서 특수 문자 입력에 대한 자세한 내용은 Vim Wikia의 특수 문자 입력 페이지를 참고하세요.
vim-raku
Vim의 vim-raku 플러그인은 ASCII 기반 연산자를 유니코드 기반 등가물로 선택적으로 바꾸도록 설정할 수 있어요. 입력하는 동안 ASCII 기반 연산자를 즉석에서 변환해줘요.
Emacs
Emacs에서 유니코드 문자는 먼저 C-x 8 RET 코드를 입력해요. 그러면 미니버퍼에 Unicode (name or hex):라는 텍스트가 나타나요. 그다음 유니코드 코드포인트 16진수를 입력하고 Enter를 누르면 해당 유니코드 문자가 문서에 나타나요. 그리스 문자 λ(lambda)를 입력하려면 이 키 조합을 써요:
C-x 8 RET 3bb RET
유니코드와 Emacs 입력에 대한 자세한 내용은 Unicode Encoding Emacs 위키 페이지를 참고하세요.
RFC 1345 문자 니모닉도 사용할 수 있어요:
C-x RET C-\ rfc1345 RET
또는 C-u C-\ rfc1345 RET.
특수 문자를 입력하려면 & 다음에 니모닉을 입력해요. Emacs는 에코 영역에 입력 가능한 문자를 보여줘요. 예를 들어 그리스 문자 λ(lambda):
&l*
C-\로 입력 방식을 토글할 수 있어요.
특수 문자를 넣는 또 다른 입력 방식은 TeX예요. C-u C-\ TeX RET로 선택하세요. \ 같은 접두어로 특수 문자를 입력할 수 있어요. 예를 들어 λ를 입력하려면:
\lambda
입력 방식이 제공하는 문자·시퀀스를 보려면 describe-input-method 명령을 실행하세요:
C-h I TeX
Raku에서 유용한 문자들
스마트 따옴표 (Smart quotes)
이 문자들은 여러 언어에서 따옴표로 쓰여요. Raku에서는 따옴표 문자로 쓰여요.
이제 이런 구성도 가능해요:
say 「What?!」;
say ”Whoa!“;
say „This works too!”;
say „There are just too many ways“;
say “here: “no problem” at all!”; # 중첩할 수 있어요!
이건 셸에서 특히 유용한데:
raku -e 'say ‘hello world’'
따옴표를 신경 쓸 필요 없이 코드 조각을 복사·붙여넣기할 수 있기 때문이에요.
Guillemets
이 문자들은 프랑스어와 독일어에서 따옴표로 쓰여요. Raku에서는 삽입 단어 따옴표(interpolation word quotes), 하이퍼 연산자, POD6에서 꺾쇠 대안으로 쓰여요.
| 기호 | 유니코드 코드포인트 | ascii 대응 |
|---|---|---|
| « | U+00AB | << |
| » | U+00BB | >> |
이런 구성이 가능해요:
say (1, 2) »+« (3, 4); # OUTPUT: «(4 6)» - 요소별 덧셈
[1, 2, 3] »+=» 42; # @array의 각 요소에 42를 더함
say «moo»; # OUTPUT: «moo»
my $baa = "foo bar";
say «$baa $baa ber».raku; # OUTPUT: «("foo", "bar", "foo", "bar", "ber")»
집합/가방 연산자 (Set/bag operators)
집합/가방 연산자들은 모두 집합론 관련 기호를 사용해요. 유니코드 코드포인트와 ASCII 대응은 아래 목록과 같아요. 이런 문자를 입력하려면 문자 조합 코드(예: Vim의 Ctrl-V u, Bash의 Ctrl-Shift-u)를 입력한 다음 유니코드 코드포인트 16진수를 입력하면 돼요.
| 연산자 | 유니코드 코드포인트 | ascii 대응 |
|---|---|---|
| ∈ | U+2208 | (elem) |
| ∉ | U+2209 | !(elem) |
| ∋ | U+220B | (cont) |
| ∌ | U+220C | !(cont) |
| ≡ | U+2261 | (==) |
| ≢ | U+2262 | !(==) |
| ⊆ | U+2286 | (<=) |
| ⊈ | U+2288 | !(<=) |
| ⊂ | U+2282 | (<) |
| ⊄ | U+2284 | !(<) |
| ⊇ | U+2287 | (>=) |
| ⊉ | U+2289 | !(>=) |
| ⊃ | U+2283 | (>) |
| ⊅ | U+2285 | !(>) |
| ∪ | U+222A | (|) |
| ∩ | U+2229 | (&) |
| ∖ | U+2216 | (-) |
| ⊖ | U+2296 | (^) |
| ⊍ | U+228D | (.) |
| ⊎ | U+228E | (+) |
수학 기호
위키백과에 유니코드 수학 연산자·기호의 전체 목록과 수학적 의미 링크가 있어요.
그리스 문자
그리스 문자를 변수 이름으로 쓸 수 있어요. 그리스·콥트 문자의 목록과 코드포인트는 위키백과의 Greek in Unicode 문서를 참고하세요.
예를 들어 $π에 3을 할당하려면 Vim에서 이렇게 입력해요(명확성을 위해 compose 시퀀스 사이에 공백을 넣었어요):
my $«Ctrl-V u 03C0» = 3; # same as: my $π = 3;
say $«Ctrl-V u 03C0»; # same as: say $π;
위첨자와 아래첨자
U+207x, U+208x, (드물게) U+209x 범위를 쓰면 제한된 위첨자·아래첨자를 유니코드로 직접 만들 수 있어요. 다만 제곱(2승)이나 세제곱(3승) 값을 만들려면 이들이 Latin1 보충 유니코드 블록에 정의돼 있으므로 U+00B2와 U+00B3를 써야 해요.
그래서 exp(x)를 0 주위로 테일러 급수 전개한 식을 쓸 때, 예를 들어 vim에 이렇게 입력해요:
exp(x) = 1 + x + x«Ctrl-V u 00B2»/2! + x«Ctrl-V u 00B3»/3!
+ ... + x«Ctrl-V u 207F»/n!
# which would appear as
exp(x) = 1 + x + x²/2! + x³/3! + ... + xⁿ/n!
또는 1부터 k까지의 목록 요소를 지정하려면:
A«Ctrl-V u 2081», A«Ctrl-V u 2082», ..., A«Ctrl-V u 2096»
# which would appear as
A₁, A₂, ..., Aₖ
폰트 문제 (Font issues)
일부 배포판에는 모든 유니코드 글리프를 포함하지 않은 폰트가 들어 있어요. 일부 글리프 표시에 문제가 있다면 GNU Unifont 같은 폰트를 설치해야 할 수 있어요.