Какой самый простой способ вставить символы Unicode в документ?

28

При написании документов иногда я хочу вставлять символы Unicode в текст. Иногда я знаю код символа, а иногда я ищу его в Интернете.

В настоящее время я иду, чтобы вставить режим, а затем использовать <Ctrl-V>u{four digit hex number}, который может быть очень трудоемким. Есть ли более простой способ вставки символов (возможно, какая-то форма вставки)?

Мартин Йорк
источник
Другой вопрос - действительно «особый случай» этого более общего вопроса; ответы будут такими же ... Мой комментарий там также применим: используйте средства вашей ОС (какими бы они ни были) или какую-то другую программу для всей ОС (например, когда я использовал Windows, мне нравилось использовать AllChars, который эмулирует X11). Составьте ключ, он работает во всех программах).
Мартин Турной
Да, это особый случай, и ответы для него специализированы. Не думаете ли вы, что может быть более обобщенное решение, которое включает в себя больше вещей, которые люди не учитывали при рассмотрении особого случая.
Мартин Йорк,
Мы могли бы также сделать этот вопрос более общим или отметить, что этот вопрос является дублирующим (хотя это было раньше); Я действительно не забочусь как таковой . Но я не думаю, что оба эти вопроса помогут кому-то в долгосрочной перспективе :-)
Мартин Турной
Если бы я мог контролировать мир. Может быть, мы должны дать ему постоять один или два дня, чтобы он собрал какие-то уникальные ответы, которые могли бы отличить его от другого вопроса. Если он остается без ответа или ответы просто дубликаты, закройте / удалите его.
Мартин Йорк
Хорошо .. Я , безусловно , согласен другой вопрос не имеет большие ответы, и этот вопрос должен привлечь лучших из них (надеюсь) ... Редактирование другой вопрос (чтобы сделать его более общий характер ) все еще оставляет его с кучей весьма upvoted ответы, которые касаются только тире em, так что это тоже не здорово ... Так что я отозвал свой закрытый голос, и, как только он получит несколько приличных ответов, я проголосую за другого или просто за это (хотя это было раньше) ... Я, конечно, не могу контролировать то, что другие люди выбирают для голосования.
Мартин Турной

Ответы:

23

Предисловие : Это не имеет никакого отношения к Vim как таковому, но я покажу вам, что я считаю «лучшим» способом вставки этих символов на сегодняшний день; Система управления графиком в Vim примерно такая же, но она работает только с Vim. Это будет работать во всех приложениях.

Это будет работать только для систем X11 (Linux, BSD и т. Д.). Для Windows есть AllChars . Он не обновлялся некоторое время, но я могу подтвердить, что он хорошо работает с Windows 7 (использовал его на моей предыдущей работе). Я считаю, что OS X также имеет хорошие возможности для этого, встроенные в ОС; если вы используете OS X, я рекомендую вам проверить их, но так как я никогда не использовал OS X, я не могу указать вам на них.

Ниже приведена (часть) черновая статья в блоге, которую я готовлю. К сожалению, действительно всеобъемлющего руководства не существует (пока), и ниже не описываются все функции, которые оно предлагает (например, некоторые части о мертвых ключах отсутствуют), и его можно было бы лучше написать в некоторых частях, но я думаю, что это все еще "достаточно полезно".


«Составить последовательность» - это нажатие Composeклавиши, а затем одного или нескольких символов, чтобы создать какой-либо символ, которого нет на вашей клавиатуре, например, нажатие Compose, сразу за которым следует "и aможет вызвать ä.

По умолчанию Composeне привязан ни к одной клавише 1 ; Правая Altклавиша (aka. Alt Gr) часто используется, но вы устанавливаете ее на любую клавишу, которую хотите.

Установите его с помощью xmodmap

Вы можете использовать xmodmap для установки этого:

$ 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

Вы, вероятно, хотите добавить это в свой ~/.Xmodmapфайл 2 :

! Set compose key
keysym Alt_R = Multi_key

Установите его с помощью XKB

Вы также можете установить ключ compose в качестве опции для XKB с помощью setxkbmap:

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

Чтобы сделать их постоянными, добавьте команду в файл запуска X или, в качестве альтернативы, вы также можете установить ее в /etc/X11/xorg.conf:

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

Или, в более «современном» стиле, вы можете создать файл /etc/X11/xorg.conf.d/90-compose.conf:

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

Список возможных значений можно найти в xkeyboard-config(7)разделе «Положение клавиши Compose» 3 .

Настройка мертвых ключей

Мертвый ключ используется главным образом для добавления акцента или диакритического знака к букве (например, умлаут, могила акцента и т. Д.), Хотя его можно использовать для создания любого символа. Это работает ... 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

Создание файла ~ / .XCompose

По умолчанию файл Compose ~/.XComposeотсутствует /usr/share/X11/locale/$LANG/Compose. Наличие ваших собственных ~/.XComposeпереопределяет значение по умолчанию, но вы все равно можете включить значение по умолчанию с помощью:

include "%L"

Изменения любого файла Compose вступают в силу при перезапуске приложения. Вам не нужно перезапускать X.

Составить ключ

«Составьте последовательность» - нажмите Composeклавишу, а затем один или несколько символов, чтобы получить какой-либо символ, например:

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

Означает, что нажатие Composeсразу следует "и aвыдает ä.

<Multi_key>обозначает, что мы используем Composeключ. затем мы следуем за этим списком из одного или нескольких ключей, которые должны быть keysyms, которые являются символическими представлениями ключей, используемых X (см. раздел Keysyms).

Затем следует результат :, за которым следует результат.

Результат:

<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

Примечание : A Compose файл чувствителен к регистру, поэтому Aэто не то же самое , как a.

Мертвые ключи

СДЕЛАТЬ

Заставь это работать в GTK & Qt

Установите переменные среды GTK_IM_MODULE& QT_IM_MODULEв xim.

Оболочка Борна:

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

C оболочка:

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

Смотрите также

мой ~/.XCompose

Это то, ~/.XComposeчто я использую ; Я использовал скрипт для генерации этого, но я случайно переписал это при компиляции> _ <Так что мне нужно переписать его.

Также обратите внимание на эту строку:

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

Нажатие Compose ibвставит эту строку (случайный тестовый номер IBAN); очень полезно для тестирования приложений, где такое число требуется для создания какого-либо объекта (Person, Organization); XCompose также может служить инструментом «сниппет» :-)

Сноски

1: У некоторых клавиатур UNIX была выделенная Composeклавиша ( например, это SUN ), но в наши дни это довольно редко.

2: В зависимости от вашей существующей настройки, это может или не может быть прочитано при запуске, в зависимости от вашей конфигурации, добавьте строку xmodmap ~/.Xmodmapв ~/.xinitrcили ~/.xsession; также смотрите ArchLinux вики .

3: Воспроизводится для вашей выгоды:

    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                     |
    +------------------------------------------------------+
Мартин Турной
источник
1
Для Windows используйте Wincompose вместо Allchars. Он делает именно то, что говорит на банке. Я использовал Allchars, пока не нашел Wincompose. Ограничение композиции состоит в том, что у вас не может быть запоминающейся комбинации, чтобы охватить все символы, только те, которые вы часто используете или которые имеют логическую декомпозицию.
Жиль "ТАК ... перестать быть злым"
@ Жиль Спасибо; WinCompose выглядит красиво. Вы правы, что вы можете ввести только довольно ограниченное подмножество «наиболее используемых» символов. Для меня этого достаточно> 95% времени. В остальном я использую UniView ... Я не знаю ничего значительно лучше ...
Мартин Турной
Для редко используемых символов я использую Shapecatcher (нет интеграции с редактором, о которой я знаю) или я набираю имя символа ( C-x 8 RETв редакторе, который не является vi, я не знаю, есть ли в Vim что-то похожее).
Жиль "ТАК ... перестать быть злым"
1
Пользователи KDE не могут использовать этот метод, поскольку KDE передает ответственность за реализацию этой функции в Xorg , а Xorg переводит в Qt , а Qt отправляет обратно в Xorg . Я обсуждаю это на своей странице о наборе текста RTL .
dotancohen
@dotancohen Это похоже на другую проблему (как, например, запрос функции).
Мартин Турной
20

Для вставки символов Юникода, таких как символы евро или авторского права, или диакритических знаков, таких как германская умлаут или акцентная могила, digraphsможно использовать.

Например, в режиме вставки нажмите Ctrl+ kи введите следующее:

  • Испанский: a'для á, E'для É, n?для ñ, для ,
  • Немецкий: a:для ä, ssдля ß,
  • другие акцентированные буквы: a!для à, a>для, âдля ê, a?для ã,
  • Греческий: a*для α(альфа), b*для β(бета), g*для γ(гамма), d*для δ(дельта).
  • квадратные номера: 22для ², 33или³
  • валюты: Euдля (евро), Pdдля £(фунт),
  • Coдля ©(Авторское право), DGдля °(Степень),
  • OKдля , XXдля , Sbдля (пули),
  • знаки пунктуации: -Nfor (en dash), -Mfor (em dash)

Когда опция digraph установлена ​​( :set dg), вы также можете использовать следующий метод:

  • aBackspace:для ä, EBackspaceuдля и т. д.

Чтобы получить список определенных диграфов, наберите: :digraphs( :dig).

Источник: ввод специальных символов на сайте Vim Wikia .


OS X

Если вы используете OS X, очень легко набирать акцентированные буквы в любом месте следующим способом:

  • Option+ e, То aдля á, eдля é, iдля íи подобное,
  • Option+ n, то aдля ã, nдля ñи подобных,
  • Option+ u, то uдля ü,
  • знаки препинания: Option+ 1для ¡, Option+ Shift+ ?для ¿,

Смотрите также:

kenorb
источник
6

Мой плагин Unicode позволяет легко вводить символы Unicode. Конкретно это позволяет

  • :Digraph <name> - Поиск орграфов для персонажа

  • :UnicodeTable - отображает таблицу символов

  • :UnicodeName - Определить символ под курсором

  • Завершение символов с использованием их имен или значений из таблицы Unicode ( :h i_CTRL-X_CTRL-Z) или дигарфов ( :h i_CTRL-X_CTRL_G)

Прочтите справку для получения дополнительной информации о том, как использовать мой плагин.

Кристиан Брабандт
источник
3

В дополнение к использованию предопределенных орграфов (Выполнить, :digчтобы получить список), вы также можете определить свои собственные орграфы в vim:

:digr e: 235 a: 228

Смотрите также: http://vimdoc.sourceforge.net/htmldoc/digraph.html

Hjulle
источник
3

Для часто используемых символов :digraphили внешних средств, таких как упомянутый ключ Compose , отлично. Для редко используемых я определяю сокращения, как это:

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

А затем используйте мой плагин SnippetComplete, чтобы получить всплывающее меню, в котором перечислены все такие сокращения, например:unicode_<C-x>]

Инго Каркат
источник