How do I paste non-ASCII characters into vim?

2019-03-15 13:35发布

My terminal emulator is configured for Unicode character encoding and my .vimrc contains the line

set encoding=utf-8

but when I try pasting the word "café" into vim, it comes out as "café".

I can make an "é" in vim by typing Ctrl-vu followed by the 4-character code point (00e9) but I'd like the ability to paste it in.

4条回答
狗以群分
2楼-- · 2019-03-15 14:06

The solution was to uncheck the "Escape non-ASCII input" checkbox in the Advanced tab of the Terminal.app settings.

查看更多
\"骚年 ilove
3楼-- · 2019-03-15 14:09
  1. From where are you trying to paste it? If it is opera, then since opera-10.5* paste is broken in both directions. Before pasting anything you need to use xclip -o|xclip -i workaround (add -sel clip for clipboard).
  2. What command do you use?
查看更多
ゆ 、 Hurt°
4楼-- · 2019-03-15 14:09

How to type a non ASCII code into vi

You'll have to know what your encoding is to enter the proper codes, I assume you left VI at the default.

In VI, go into insert mode, while in insert mode, press

Ctrl-v 172

That should insert the Logical Not (sideways and inverted L) character defined here:

http://www.htmlhelp.com/reference/charset/iso160-191.html

查看更多
仙女界的扛把子
5楼-- · 2019-03-15 14:21

Instead of copying the character from the clipboard and pasting it into the text editor, you can add it to the file using vim's digraph feature.

So, with default settings, using your example, you could enter insert mode, then hit Control-k, and type e'. The result will be é.

You can see the list of defined digraphs by running

:digraphs

and general help by running

:help digraph

which also explains how to customize your mappings.

If you are truly set on pasting the characters in, Shift-Insert has always worked for me.

查看更多
登录 后发表回答