Bracketed Paste Mode in Terminal
source link: https://jdhao.github.io/2021/02/01/bracketed_paste_mode/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Bracketed Paste Mode in Terminal
A note on bracketed paste mode in terminal and Neovim.
I use ZOC terminal to connect to my remote
server. Today, I noticed a strange issue when I copied text from elsewhere to
the terminal shell command line. When I copied some text and pasted it in the
terminal, I found that 0~
was added in the beginning of text, and 1~
was
added in the end of text.
I found a similar issue on stackexchange. It turns out that this has something to do with bracketed paste mode in terminal emulators. Without this mode, our terminal can not discern the difference between pasting text and typing text manually. But how is this even important? A noticeable example is when we paste multi-line code into Vim. Since the code have already been properly indented, we do not want Vim to alter it. Without this terminal ability, Vim does not know whether you are typing the text or paste it from the terminal. So when it meets a newline character, it will try to re-indent the following line, causing a complete mess when pasting code into a Vim buffer.
If the terminal supports bracketed paste mode, to enable it, use the following command:
printf '\e[?2004h'
To disable this mode, use printf '\e[?2004l'
.
For plain Vim, see this post on
how to enable bracketed paste mode. If you are using Neovim, bracketed paste
mode in builtin, if your terminal supports it, you do not need to do any setup.
Neovim will just work, see also :h bracketed-paste-mode
inside Neovim.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK