将Unicode字符插入文档中最简单的方法是什么?


28

偶尔编写文档时,我想在文本中插入Unicode字符。有时我知道字符代码,有时我在网上查找它。

目前,我进入插入模式,然后使用<Ctrl-V>u{four digit hex number},这可能非常费力。有没有插入字符的简便方法(也许是某种形式的粘贴)?


另一个问题实际上是这个更为通用的问题的“特殊情况”。答案将是相同的...我的评论也适用:使用OS的工具(无论使用何种工具),或其他一些OS范围的程序(例如,当我使用Windows时,例如,我喜欢使用模仿X11的AllChars)编写键;它在所有程序中均有效。
马丁·图尔诺伊

是的,这是一种特殊情况,答案专门针对此情况。您是否认为可能存在一种更通用的解决方案,其中包含人们在查看特殊情况时未考虑的更多内容。
马丁·约克

我们也可以使这个问题更笼统,或者将其标记为该问题的重复(即使是更早);我真的不在乎这样。但是我不认为同时存在这两个问题从长远来看会帮助任何人:-)
Martin Tournoij 2015年

如果我能控制世界。也许我们应该让它停留一两天,所以如果它收集到任何可以使它与其他问题区分开的独特答案。如果仍然没有答案或答案只是重复,则将其关闭/删除。
马丁·约克

好吧..我绝对同意另一个问题没有很好的答案,并且这个问题应该吸引更好的答案(希望如此)...编辑另一个问题(使其更通用)仍然会给它一个很高的评价答案与破折号有关,所以也不太好...所以我撤回了我的亲密投票,一旦获得一些体面的答案,我便将另一人投票给这个人(即使早些时候...)我当然不能控制其他人选择投票。
马丁·图尔诺伊

Answers:


23

前言:这与Vim无关,但是我将向您展示我认为到目前为止插入这些字符的“最佳”方法。Vim的有向图系统大致相同,但仅适用于Vim。这将适用于所有应用程序。

这仅适用于X11系统(Linux,BSD等)。对于Windows,有AllChars。它已经有一段时间没有更新了,但是我可以确认它与Windows 7兼容(在我以前的工作中使用过)。我相信OS X在OS内置的功能方面也具有良好的功能。如果您使用的是OS X,建议您将它们签出,但由于我从未真正使用过OS XI,因此无法为您指出它们。

以下是我准备中的网志文章草稿(的一部分)。不幸的是,还没有真正全面的指南,并且下面没有描述其提供的所有功能(例如,缺少一些有关死键的部分),并且在某些部分可能会写得更好,但我认为这是仍然“足够有用”。


“组合顺序”是先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)“组成键的位置”部分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文件

如果~/.XCompose缺少默认的Compose文件,则为 /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一样的a

死键

去做

使它在GTK和Qt中工作

将环境变量GTK_IM_MODULE&设置QT_IM_MODULExim

伯恩贝壳:

# 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编号);对于测试需要创建一些对象的数字的应用程序非常有用(人员,组织);XCompose也可以用作“代码段”工具:-)

脚注

1:某些UNIX键盘有专用Compose键(例如SUN),但这在当今已经很普遍了。

2:根据您现有的设置,在启动时可能会或可能不会读取此内容,具体取决于您的配置,将行添加xmodmap ~/.Xmodmap~/.xinitrc~/.xsession另请参见ArchLinux Wiki

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。compose的局限性在于,您无法拥有一个令人难忘的组合来触及所有字符,只有您经常使用的字符或具有逻辑分解的字符。
吉尔斯(Gilles)'所以

@吉尔斯谢谢; WinCompose看起来不错。没错,您只能输入相当有限的“最常用”字符子集。对我来说,这足够超过95%的时间。对于其余的部分,我将使用UniView ...我不知道有什么更好的方法了……
Martin Tournoij 2015年

对于很少使用的字符,我使用Shapecatcher(我不知道没有编辑器集成)或键入字符名称(C-x 8 RET在非vi的编辑器中,我不知道Vim是否具有类似的功能)。
吉尔(Gilles)'所以

1
KDE用户不能使用此方法,因为KDE将实现此功能的责任委托给XorgXorg委托给QtQt委托给Xorg。我将在有关输入RTL文本的页面上对此进行讨论。
dotancohen 2015年

@dotancohen看起来像是一个不同的问题(例如功能请求)。
马丁·图尔诺伊

20

要插入Unicode字符(例如欧元或版权符号)或变音符号(例如德国变音符号或重音符号),digraphs可以使用。

例如,在插入模式下,按Ctrl+ k并键入以下内容:

  • 西班牙语:a'áE'Én?ñ
  • 德语:a:对于äss对于ß
  • 其他重音字母:a!àa>âêa?ã
  • 希腊文:a*代表αalpha,b*代表βbeta,g*代表γγ和d*代表δδ。
  • 平方数:22²33³
  • 货币:Eu用于(欧元),Pd用于£(英镑),
  • Co对于©(版权),DG对于°(程度),
  • OK对于XX对于Sb对于(项目符号),
  • 标点符号:-N用于(破折号),-M用于(破折号)

设置有向图选项(: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+ ?表示¿

也可以看看:


6

我的unicode插件可以轻松输入unicode字符。具体来说,它允许

  • :Digraph <name> -搜索人物二字

  • :UnicodeTable -显示一个字符集表

  • :UnicodeName -识别光标下的字符

  • 使用unicode表(:h i_CTRL-X_CTRL-Z)或digarphs(:h i_CTRL-X_CTRL_G)中的字符名称或值来填充字符

阅读帮助以获取有关如何使用我的插件的更多信息。



3

对于常用的字符,:digraph或者使用诸如提到的Compose键之类的外部方法都很好。对于很少使用的字母,我定义缩写,如下所示:

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

然后使用我的SnippetComplete插件获取一个弹出菜单,其中列出了所有此类缩写,例如:unicode_<C-x>]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.