From 46bb985dc784d95481cdf4211f97564735df99f2 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Sun, 7 Apr 2013 16:56:00 -0700 Subject: [PATCH] vim-bracketed-paste! --- README.md | 25 +++++++++++++++++++++++++ plugin/bracketed-paste.vim | 17 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 README.md create mode 100644 plugin/bracketed-paste.vim diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a27065 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +vim-bracketed-paste enables transparent pasting into vim. (i.e. no more `set paste`!) + +Installation +============ + +I recommend using [pathogen](https://github.com/tpope/pathogen). Once you have installed pathogen: + +```bash +cd ~/.vim/bundle +git clone https://github.com/ConradIrwin/vim-bracketed-paste +``` + +Otherwise just copy-paste everything from [plugin/bracketed-paste.vim](https://github.com/ConradIrwin/vim-bracketed-paste/blob/master/plugin/bracketed-paste.vim) into your `~/.vimrc`. + +Usage +===== + +You need to be using a modern xterm-compatible terminal emulator (xterm, urxvt, and iTerm2 are known to work, there are probably more) that supports [bracketed paste mode](http://www.xfree86.org/current/ctlseqs.html#The Alternate Screen Buffer). + +Then whenever you paste into your terminal emulator using `command+v` or `shift+insert`, vim will automatically `set paste` for you. + +Credit +====== + +The code for this plugin was taken from Chis Page's answer to a [StackOverflow question](http://stackoverflow.com/questions/5585129/pasting-code-into-terminal-window-into-vim-on-mac-os-x), I just packaged it. diff --git a/plugin/bracketed-paste.vim b/plugin/bracketed-paste.vim new file mode 100644 index 0000000..834aa04 --- /dev/null +++ b/plugin/bracketed-paste.vim @@ -0,0 +1,17 @@ +" Code from: +" http://stackoverflow.com/questions/5585129/pasting-code-into-terminal-window-into-vim-on-mac-os-x +" Docs on bracketed paste mode: +" http://www.xfree86.org/current/ctlseqs.html +if &term =~ "xterm.*" + let &t_ti = &t_ti . "\e[?2004h" + let &t_te = "\e[?2004l" . &t_te + function XTermPasteBegin(ret) + set pastetoggle=[201~ + set paste + return a:ret + endfunction + map [200~ XTermPasteBegin("i") + imap [200~ XTermPasteBegin("") + cmap [200~ + cmap [201~ +endif