在Vim中如何将表情符号插入字符串?

37

我无法想出解决方法。只需要将一个表情符号输入到字符串中,但无法解决。Unicode不能正常工作。尝试过双字母组合,但还是不行。在Vim中有什么诀窍吗?谢谢!


http://junegunn.kr/2014/06/emoji-completion-in-vim/ - Kent
谢谢。我希望有一种方法可以不添加整个插件而只是输入它。增加一个插件并不是很麻烦,但似乎还有其他的办法。 - Fedreg
5个回答

46

您无需安装插件即可实现此操作。您只需要输入表情符号的 Unicode 值即可,在插入模式下使用 <C-v> 即可实现。参见 :h i_ctrl-v_digit:

                        *i_CTRL-V_digit*
With CTRL-V the decimal, octal or hexadecimal value of a character can be
entered directly.  This way you can enter any character, except a line break
(<NL>, value 10).  There are five ways to enter the character value:

first char  mode         max nr of chars   max value ~
(none)      decimal        3        255
o or O      octal          3        377      (255)
x or X      hexadecimal    2        ff       (255)
u           hexadecimal    4        ffff     (65535)
U           hexadecimal    8        7fffffff (2147483647)
例如,如果你想输入这个微笑的表情符号,它的Unicode值为U+1F60A,那么你只需输入:
<C-v>U1F60A<esc>

或者如果您不想按下<esc>

<C-v>U0001F60A

提醒一下,根据您使用的字体不同,它可能无法在vim中正确呈现。如果您使用gvim,可以更改:se guifont=*,或者在常规vim中更改控制台字体以使其呈现(假设您选择了一个可以呈现此特定表情符号的字体)


1
我成功地按照您的示例输入了一个笑脸。但我正试图输入一个❤️,它有两个代码点,“U+2764, U+FE0F”。不确定如何输入! - Dmitry Minkovsky

23

另一种方法是使用缩写。

我在我的 .vimrc 文件 中添加了一些,现在我只需键入 :pushpin: 代表📌,:bulb: 代表💡,:bomb: 代表💣 等等...

" Emoji shortcuts
ab :white_check_mark: ✅
ab :warning: ⚠
ab :bulb: 
ab :pushpin: 
ab :bomb: 
ab :pill: 
ab :construction: 
ab :pencil: 
ab :point_right: 
ab :book: 
ab :link: 
ab :wrench: 
ab :info: 
ab :telephone: 
ab :email: 
ab :computer: 

emojicopy.com或类似的网站上有更多的表情符号。我只是挑了一些以前已经用过的。


1
很好;下面的答案 特别链接到 emoji-ab,这基本上反映了我在整个系统中使用的替换方法 - amcgregor
看起来我又重新发明了轮子:-D。感谢@amcgregor的报告。 - bitifet

5

虽然可以使用<c-v>U1f60A<esc>输入表情符号,但如果你正在回复电子邮件/在网络表格中输入评论,则并不实用。我不会为了快速的“谢谢”评论而记忆unicode表情符号。

对于此类用例,有几种其他选项:

  1. 键入您通常的表情符号,如:),并使用插件将其替换为相应的unicode表情符号。插件emoji-ab可以为您完成此操作。

  2. 键入像:boom:这样的代码。许多Markdown解析器都会将其转换为相应的图标。但是,如果您没有使用这样的解析器,emoji-ab也会为您转换它。

  3. 使用诸如gucharmap(或众多在线Unicode选择器之一)将Unicode字符复制并粘贴到vim中。


5

在许多情况下,包括Vim中访问这些表情符的另一种方法是使用字符映射对话框窗口:

  • 在Mac上,按Ctrl+Command+空格并选择字符。
  • 在Windows上,按Windows+R并键入charmap。

Charmap selector image


GNOME 3.28及以上版本(Ubuntu Linux和其他地方)具有表情符号选择器,但遗憾的是它在GNOME终端中无法使用。请参见https://www.omgubuntu.co.uk/2018/06/use-emoji-linux-ubuntu-apps - Flimm

2
您可以使用emoji-fzf pip包。
首先安装fzf。
sudo apt install fzf 

然后安装 emoji-fzf。
pip install emoji-fzf

现在,请确保您可以运行emoji-fzf。

emoji-fzf --help

如果你遇到了“命令未找到”的错误,请查看pip安装包成功,但无法从命令行找到可执行文件

现在将emoji-fzf添加到你的.vimrc文件中

" Use emoji-fzf and fzf to fuzzy-search for emoji, and insert the result
function! InsertEmoji(emoji)
    let @a = system('cut -d " " -f 1 | emoji-fzf get', a:emoji)
    normal! "agP
endfunction

command! -bang Emoj
  \ call fzf#run({
      \ 'source': 'emoji-fzf preview',
      \ 'options': '--preview ''emoji-fzf get --name {1}''',
      \ 'sink': function('InsertEmoji')
      \ })
" Ctrl-e in normal and insert mode will open the emoji picker.
" Unfortunately doesn't bring you back to insert mode 
map <C-e> :Emoj<CR>
imap <C-e> <C-o><C-e>

重新启动您的vim,按下ctrl + e,搜索您最喜欢的表情符号,然后按enter键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接