Jak najłatwiej wstawić znaki Unicode do dokumentu?

28

Od czasu do czasu pisząc dokumenty, chcę wstawić znaki Unicode do tekstu. Czasami znam kod znaków, a czasem szukam go w Internecie.

Obecnie przechodzę do trybu wstawiania, a następnie używam <Ctrl-V>u{four digit hex number}, co może być bardzo pracochłonne. Czy istnieje łatwiejszy sposób wstawiania znaków (może jakiś sposób wklejania)?

Martin York
źródło
Drugie pytanie jest tak naprawdę „szczególnym przypadkiem” tego bardziej ogólnego pytania; odpowiedzi będą takie same ... Mój komentarz tam również dotyczy: Korzystaj z możliwości systemu operacyjnego (niezależnie od tego, jakie mogą być) lub innego programu dla całego systemu operacyjnego (na przykład, kiedy korzystałem z systemu Windows, lubiłem używać AllChars, który emuluje X11 Skomponuj klucz; działa we wszystkich programach).
Martin Tournoij
Tak, to jest szczególny przypadek, a odpowiedzi są do tego specjalnie dostosowane. Nie sądzisz, że może istnieć bardziej ogólne rozwiązanie, które obejmuje więcej rzeczy, których ludzie nie brali pod uwagę przy rozpatrywaniu szczególnego przypadku.
Martin York
Moglibyśmy również uczynić to pytanie bardziej ogólnym lub oznaczyć je jako duplikat tego (choć było wcześniej); Nie obchodzi mnie to jako takie . Ale nie sądzę, że posiadanie obu pytań w
obecnej formie
Gdybym mógł kontrolować świat. Może powinniśmy pozostawić to na dzień lub dwa, aby zebrać jakieś unikalne odpowiedzi, które mogłyby odróżnić je od drugiego pytania. Jeśli pozostaje bez odpowiedzi lub odpowiedzi są tylko duplikatami, zamknij / usuń.
Martin York
W porządku .. Zdecydowanie zgadzam się, że na drugie pytanie nie ma świetnych odpowiedzi, a to pytanie powinno przyciągnąć lepsze (mam nadzieję) ... Edycja drugiego pytania (aby było bardziej ogólne) wciąż pozostawia go z dużą ilością pozytywnych opinii odpowiedzi, które dotyczą tylko kreski, więc to też nie jest świetne ... Więc cofnąłem mój głos, a gdy tylko otrzymam jakieś przyzwoite odpowiedzi, głosuję drugiemu duplikat tego (nawet jeśli było wcześniej) ... Oczywiście nie mogę kontrolować, co głosują inni.
Martin Tournoij,

Odpowiedzi:

23

Przedmowa : To nie ma nic wspólnego z Vimem jako takim, ale pokażę ci, co uważam za „najlepszy” sposób na wstawienie tych znaków; System digrafów Vima jest mniej więcej taki sam, ale działa tylko z Vimem. Działa to we wszystkich aplikacjach.

Działa to tylko w systemach X11 (Linux, BSD itp.). W systemie Windows jest AllChars . Od jakiegoś czasu nie był aktualizowany, ale mogę potwierdzić, że działa dobrze z Windows 7 (użyłem go w mojej poprzedniej pracy). Wierzę, że OS X ma również dobre możliwości, aby to zrobić wbudowane w system operacyjny; jeśli używasz OS X, zachęcam do ich sprawdzenia, ale ponieważ tak naprawdę nigdy nie korzystałem z OS XI, nie mogę cię do nich wskazać.

Poniżej znajduje się (część) szkicowego artykułu blogu, który mam w przygotowaniu. Niestety naprawdę nie ma jeszcze wyczerpującego przewodnika (poniżej), a poniżej nie opisano wszystkich funkcji, które oferuje (na przykład brakuje niektórych części dotyczących martwych kluczy) i można by je lepiej napisać w niektórych częściach, ale myślę, że to wciąż „wystarczająco użyteczne”.


„Sekwencja tworzenia” to naciśnięcie Composeklawisza, a następnie jednego lub więcej znaków, aby utworzyć znak, którego nie można znaleźć na klawiaturze, na przykład naciśnięcie Compose, natychmiast po nim "i amoże dać znak ä.

Domyślnie Composenie jest powiązany z żadnym kluczem 1 ; prawy Altklawisz (aka. Alt Gr) jest często używany, ale ustawiasz go na dowolny klucz, który chcesz.

Ustaw za pomocą xmodmap

Możesz użyć tego xmodmap do ustawienia:

$ xmodmap -e 'keysym Alt_R = Multi_key'     # Set it right Alt
$ xmodmap -e 'keysym Caps_Lock = Multi_key' # Set it to Caps Lock
$ xmodmap -e 'keysym F12 = Multi_key'       # You're free to use *any* key, like F12

Prawdopodobnie chcesz to dodać do ~/.Xmodmappliku 2 :

! Set compose key
keysym Alt_R = Multi_key

Ustaw za pomocą XKB

Możesz także ustawić klucz tworzenia jako opcję dla XKB za pomocą setxkbmap:

setxkbmap -option compose:ralt  # Right alt
setxkbmap -option compose:caps  # Caps Lock

Aby ustawić je na stałe, dodaj polecenie do pliku startowego X lub alternatywnie możesz również ustawić /etc/X11/xorg.conf:

Section "InputDevice"
    Identifier "Keyboard0"
    Driver "kbd"
    Option "XkbOptions" "compose:ralt"
    #Option "XkbOptions" "compose:caps"
EndSection

Lub, w bardziej „nowoczesnym” stylu, możesz utworzyć plik /etc/X11/xorg.conf.d/90-compose.conf:

Section "InputClass"
    Identifier "Set compose key"
    MatchIsKeyboard "on"
    Option "XkbOptions" "compose:ralt"
EndSection

Lista możliwych wartości znajduje się w xkeyboard-config(7)sekcji „Pozycja klawisza Compose” 3 .

Konfigurowanie martwych kluczy

Martwy klucz służy głównie do dodania akcentu lub znaku diakrytycznego do litery (np. Umlaut, grób akcentujący itp.), Chociaż można go użyć do utworzenia dowolnej postaci. Działa ... TODO '

keycode 133 = dead_greek NoSymbol SuperR

http://zuttobenkyou.wordpress.com/2011/08/24/xorg-using-the-us-international-altgr-intl-variant-keyboard-layout/
http://stackoverflow.com/questions/14922007/how-to-enter-greek-alpha-under-xor
keycode 48 = dead_grave apostrophe


<dead_grave> <space>       : "`"   grave # GRAVE ACCENT
<dead_grave> <dead_grave>  : "`"   grave # GRAVE ACCENT
<dead_grave> <a>           : "À"   agrave # LATIN CAPITAL LETTER A WITH GRAVE

Tworzenie pliku ~ / .XCompose

Domyślny plik tworzenia, jeśli go ~/.XComposebrakuje, to /usr/share/X11/locale/$LANG/Compose. Posiadanie własnego ~/.XComposezastępuje wartość domyślną, ale nadal można dołączyć wartość domyślną do:

include "%L"

Zmiany dowolnego pliku tworzenia są uwzględniane po ponownym uruchomieniu aplikacji. Nie musisz ponownie uruchamiać X.

Skomponuj klucz

„Sekwencja tworzenia” polega na naciśnięciu Composeklawisza, a następnie co najmniej jednego znaku, aby utworzyć znak, na przykład:

<Multi_key> <quotedbl> <a> : "ä" adiaeresis

Oznacza to, że naciśnięcie Compose, zaraz po nim następuje "i atworzy ä.

<Multi_key>oznacza, że ​​używamy Composeklucza. po tym następuje lista jednego lub więcej kluczy, które muszą być keysymssymbolicznymi reprezentacjami kluczy używanych przez X (zobacz sekcję Keysyms).

Po nim :następuje, a następnie wynik.

Wynik:

<Multi_key> <a>          :  "ä" adiaeresis
<Multi_key> <b> <b>      :  "ä" adiaeresis
<Multi_key> <c> <c> <c>  :  "ä" adiaeresis
<Multi_key> Alt <d>      :  "ä" adiaeresis
<Multi_key> Ctrl <e>     :  "ä" adiaeresis

Uwaga : w pliku tworzenia jest rozróżniana wielkość liter, więc nieA jest to to samo, co a.

Martwe klucze

DO ZROBIENIA

Niech działa w GTK i Qt

Ustaw zmienne środowiskowe GTK_IM_MODULEi QT_IM_MODULEna xim.

Skorupa Bourne'a:

# Make compose key work for GTK, Qt
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

Powłoka C:

# Make compose key work for GTK, Qt
setenv GTK_IM_MODULE xim
setenv QT_IM_MODULE xim

Zobacz też

Mój ~/.XCompose

Tego ~/.XComposeużywam ; Użyłem skryptu, aby to wygenerować, ale przypadkowo nadpisałem to podczas kompilacji> _ <Więc muszę go przepisać.

Zwróć również uwagę na ten wiersz:

<Multi_key> <i> <b> : "NL65AEGO0721647952"

Naciśnięcie Compose ibspowoduje wstawienie tego ciągu (losowy numer IBAN testu); bardzo przydatny do testowania aplikacji, w których taka liczba jest wymagana do utworzenia jakiegoś obiektu (Osoba, Organizacja); XCompose może również służyć jako narzędzie „fragmentu” :-)

Przypisy

1: Niektóre klawiatury UNIX miały dedykowany Composeklawisz ( jak ten SUN ), ale obecnie jest to dość rzadkie.

2: W zależności od istniejącej konfiguracji może to być odczytane przy starcie, w zależności od konfiguracji, dodaj linię xmodmap ~/.Xmodmapdo jednego ~/.xinitrclub ~/.xsession; zobacz także wiki ArchLinux .

3: Reprodukowane dla Twojej korzyści:

    Position of Compose key
    +------------------------------------------------------+
    |Option                Description                     |
    +------------------------------------------------------+
    |compose:ralt          Right Alt                       |
    |compose:lwin          Left Win                        |
    |compose:lwin-altgr    3rd level of Left Win           |
    |compose:rwin          Right Win                       |
    |compose:rwin-altgr    3rd level of Right Win          |
    |compose:menu          Menu                            |
    |compose:menu-altgr    3rd level of Menu               |
    |compose:lctrl         Left Ctrl                       |
    |compose:lctrl-altgr   3rd level of Left Ctrl          |
    |compose:rctrl         Right Ctrl                      |
    |compose:rctrl-altgr   3rd level of Right Ctrl         |
    |compose:caps          Caps Lock                       |
    |compose:caps-altgr    3rd level of Caps Lock          |
    |compose:102           <Less/Greater>                  |
    |compose:102-altgr     3rd level of <Less/Greater>     |
    |compose:paus          Pause                           |
    |compose:prsc          PrtSc                           |
    |compose:sclk          Scroll Lock                     |
    +------------------------------------------------------+
Martin Tournoij
źródło
1
W systemie Windows użyj Wincompose zamiast Allchars. Robi dokładnie to, co mówi na puszce. Używałem Allcharów, dopóki nie znalazłem Wincompose. Ograniczeniem komponowania jest to, że nie możesz mieć niezapomnianej kombinacji, aby dotrzeć do wszystkich postaci, tylko tych, których często używasz lub które mają logiczny rozkład.
Gilles „SO- przestań być zły”
@Gilles Thanks; WinCompose wygląda ładnie. Masz rację, że możesz wprowadzić tylko dość ograniczony podzbiór „najczęściej używanych” znaków. Dla mnie to wystarcza> 95% czasu. Do reszty używam UniView ... Nie znam niczego znacznie lepszego ...
Martin Tournoij
W przypadku rzadko używanych znaków używam Shapecatchera (nie znam żadnej integracji edytora) lub wpisuję nazwę postaci ( C-x 8 RETw edytorze innym niż vi, nie wiem czy Vim ma coś podobnego).
Gilles „SO- przestań być zły”
1
Użytkownicy KDE nie mogą używać tej metody, ponieważ KDE przenosi odpowiedzialność za wdrożenie tej funkcji do Xorg , a Xorg przenosi się do Qt , a Qt przenosi się z powrotem do Xorg . Omawiam to na mojej stronie dotyczącej pisania tekstu RTL .
dotancohen
@dotancohen To wygląda na inny problem (jak w żądaniu funkcji).
Martin Tournoij
20

Aby wstawić znaki Unicode, takie jak euro lub symbole praw autorskich, lub znaki diakrytyczne, takie jak niemiecki umlaut lub grób akcentujący, digraphsmożna użyć.

Na przykład w trybie wstawiania naciśnij Ctrl+ ki wpisz następujące polecenie:

  • Hiszpański: a'dla á, E'dla É, n?dlañ ,
  • Niemiecki: a:dla ä, ssdlaß ,
  • inne akcentowane litery: a!for à, a>for âfor ê, a?forã ,
  • Grecki: a*dla α(alfa), b*dla β(beta), g*dla γ(gamma), d*dlaδ (delta).
  • liczby kwadratowe: 22dla ²,33 lub³
  • waluty: Eudla (Euro), Pddla£ (Funt),
  • Codla ©(Prawa autorskie), DGdla° (Stopień),
  • OKdla , XXdla , Sbdla (bullet),
  • znaki interpunkcyjne: -Nfor (en dash), -Mfor (em dash)

Gdy ustawiona jest opcja digraph ( :set dg), możesz także użyć następującej metody:

  • aBackspace:dla ä, EBackspaceudla itp.

Na liście aktualnie zdefiniowany typ digrafach: :digraphs(:dig ).

Źródło: Wprowadzanie znaków specjalnych na stronie Vim Wikia .


OS X

Jeśli używasz OS X, bardzo łatwo jest wpisać litery akcentowane w dowolnym miejscu, stosując następującą metodę:

  • Option+ e, a następnie adla á, edla é, idlaí i podobne,
  • Option+ n, a następnie adla ã, ndlañ i podobne,
  • Option+ u, a następnie udla ü,
  • znaki interpunkcyjne do góry nogami: Option+ 1for ¡, Option+ Shift+ ?for ¿,

Zobacz też:

kenorb
źródło
6

Moja wtyczka Unicode pozwala na łatwe wprowadzanie znaków Unicode. W szczególności pozwala

  • :Digraph <name> - Szukaj znaków w alfabecie

  • :UnicodeTable - Wyświetla tabelę znaków

  • :UnicodeName - Zidentyfikuj znak pod kursorem

  • Uzupełnianie znaków przy użyciu ich nazw lub wartości z tabeli unicode ( :h i_CTRL-X_CTRL-Z) lub digarphs ( :h i_CTRL-X_CTRL_G)

Przeczytaj pomoc, aby uzyskać więcej informacji na temat korzystania z mojej wtyczki.

Christian Brabandt
źródło
3

W przypadku często używanych znaków świetne są :digraphteż środki zewnętrzne, takie jak wspomniany klawisz tworzenia . Dla rzadko używanych definiuję skróty, takie jak to:

norea <unique> unicode_smiley 😃
norea <unique> unicode_skull ☠

A następnie użyj mojej wtyczki SnippetComplete, aby uzyskać wyskakujące menu z listą wszystkich takich skrótów, np .:unicode_<C-x>]

Ingo Karkat
źródło