Jak wprowadzać w VIMie specjalne symbole (np. matematyczne)?
VIM pozwala wpisywać symbole specjalne za pomocą dwuliterowych skrótów.
Digrafy wprowadza się w trybie edycji, <ctrl>K<znak><znak>
. Dodatkowo, można
włączyć opcję digraph
, która umożliwia wprowadzanie digrafów za pomocą
backspace
: <znak><bs><znak2>
.
Komenda :digraphs
wyświetla listę obecnie zdefiniowanych digrafów.
:digraphs
NU ^@ 10 SH ^A 1 SX ^B 2 EX ^C 3
ET ^D 4 EQ ^E 5 AK ^F 6 BL ^G 7
BS ^H 8 HT ^I 9 LF ^@ 10 VT ^K 11
FF ^L 12 CR ^M 13 SO ^N 14 SI ^O 15
DL ^P 16 D1 ^Q 17 D2 ^R 18 D3 ^S 19
(...)
-o º 186 >> » 187 14 ¼ 188 12 ½ 189
34 ¾ 190 ?I ¿ 191 A! À 192 A' Á 193
A> Â 194 A? Ã 195 A: Ä 196 AA Å 197
AE Æ 198 C, Ç 199 E! È 200 E' É 201
(...)
Om Ω 8486 AO Å 8491 13 ⅓ 8531 23 ⅔ 8532
15 ⅕ 8533 25 ⅖ 8534 35 ⅗ 8535 45 ⅘ 8536
16 ⅙ 8537 56 ⅚ 8538 18 ⅛ 8539 38 ⅜ 8540
Znaki diakrytyczne i alfabety
Bardzo dużo domyślnych digrafów służy do dodawania znaków diakrytycznych do liter łacińskich i pisania w niełacińskich systemach pisma (alfabetach, sylabariuszach):
! (a! → à) grawis
' (a' → á) akut
> (a> → â) cyrkumfleks (naprawdę tak się nazywa!)
? (a? → ã) tylda
- (a- → ā) makron
( (a( → ă) brewis
. (z. → ż) kropka
: (a: → ä) umlaut
; (a; → ą) ogonek
< (s< → š) haczek
/ (l/ → ł) przekreślenie
= (b= → б) cyrylica
* (a* → α) grecki
% (%Z → Ж) nietypowe litery greckie/cyrylica
Domyślnie dostępne są jeszcze zestawy znaków sylabariuszy japońskich, alfabetów hebrajskiego, arabskiego, itd.
Znaki kontrolne
Znaki z początku tabeli ASCII też mają swoje digrafy:
NU (0, NULL, w VIMie oznaczany jako ^@)
BS (8, Backspace, w VIMie ^H)
HT (9, [Horizontal] Tab, w VIMie ^I albo po prostu tab)
LF (10, Line Feed, \n, w VIMie ^M)
CR (13, Carriage Return, \r, w VIMie ^@)
itd.
Uwagi:
- tak wstawiona tabulacja nie zostanie przetłumaczona przez
expandtab
- CR/LF - jeśli potrzebny jest konkretny, a nie pamiętamy czy to 10, czy 13
- NULL - np. do przykładów w C :)
- Znaki takie jak null czy tab prościej jest wstawiać w trybie wklejania
dosłownego (
^V<znak>
/^V<decimal/hex>
):^V009
=^Vx09
. W ten sposób można też szybko zdekodować znak o znanym kodzie ASCII:^V088
->X
.
Różne symbole (matematyczne i nie tylko)
14 ¼ (58 → ⅝ itd.)
+- ±
>> »
<< «
-> →
<- ←
-v ↓
-! ↑
<> ↔
=> ⇒
<= ⇐
== ⇔
FA ∀ (For All)
TE ∃ (There Exists)
AN ∧
OR ∨
NO ¬
-) ∋
(- ∈
!= ≠
(U ∩
)U ∪
>= ≥
=< ≤
RT √
DG ° (degree)
%0 ‰
Pd £
Eu €
SE §
Co ©
My µ
TM ™
Om Ω
AO Å
2S ² (Superscript)
4s ₄ (subscript)
:9 i "9 → „” cudzysłowy drukarskie
Digrafami można też rysować ramki - ale czy na pewno powinno się to robić?
dr hh hh hh hh dl
vv vv
ur hh hh hh hh ul
┌─────┐
│ │
└─────┘
Księżyc, gwiazdy i wiele, wiele innych:
0m ○
0R ◑
0M ●
0L ◐
*1 ☆
*2 ★
SU ☼
<H ☜
>H ☞
0u ☺
0U ☻
Fm ♀
Ml ♂
Md ♩
M8 ♪
M2 ♫
...
Definiowanie własnych digrafów
Jeśli jakiegoś mapowania nie ma na domyślnej liście, można je dodać poleceniem
:digraph <znak><znak> <kod>
. Np. dla gruzińskiej litery “Doni”:
(unicode)
10D3 GEORGIAN LETTER DON
(bash)
$ echo 'ibase=16; 10D3' | bc # bash-calculator może konwertować hex->dec
4307
(vim)
:digraph gd 4307
^Kgd → დ
Można definiować digrafy z podstawowego zakresu Unicode… ale nie tylko. Emotki też można dodać (przynajmniej te jednoznakowe):
0x1F600 128512 - grinning face
0x1F44D 128077 - thumbs up
:digraph :) 128512
:digraph tu 128077
😀👍
Rozmaitości
- Jeśli musimy pracować na klawiaturze bez polskich znaków, ale mamy VIMa
skompilowanego z opcją
+digraph
, to możemy pisać po polsku za pomocą digrafów. Można też poświęcić jakiś rzadko używany znak i dodać mapowania takie jak:inoremap qa ą
, żeby nie musieć co chwilę wciskać^K
. - Wpisywanie znaków diakrytycznych z innych języków jest kłopotliwe, prościej zainstalować sobie inną klawiaturę. Ale jeśli potrzebny jest tylko jeden znak specjalny, warto mieć w głowie mnemoniki.
- Włączenie trybu
digraph
początkującemu Vimowcowi byłoby pewnie bardziej frustrujące niż klasyczny problem z wyjściem z edytora. - Wpisywanie liter z innych alfabetów może być ryzykowne - np. duża grecka
Alfa,
Α
wygląda całkiem jak łacińskieA
, ale nie da się jej wyszukać. Można to sprawdzić nawet na tej stronie:Aa ≠ Αα
. - Nie ma co być zbyt sprytnym - często lepiej mieć w pliku
H2SO4
i możliwość wyszukania po fragmencie tekstu, niż ładniejsze, ale trudne do automatycznego przetwarzania znaki wH₂SO₄
. - Są wygodniejsze metody wprowadzania emotek niż rzeźbienie w digrafach (junegunn/vim-emoji).
- “Digraph” to po polsku dwuznak, czyli dwa znaki czytane wspólnie, jako jedna głoska. Digrafy w VIMie to coś innego - służą do zastępowania dwuliterowego skrótu innym symbolem, na dodatek nie mającym nic wspólnego z fonetyką (jak przeczytać “>>”?) - dlatego stosuję spolszczenie pisowni zamiast tłumaczenia. 😀
Linki
- baza danych znaków Unicode: http://www.unicode.org/Public/UCD/latest/, warto odwiedzić zwłaszcza NamesList.txt