6 ms·
Pasting Text Into Vim
- antidoh 14y ago"I'd like to paste yanked text into Vim command line." While the top voted answer is very complete, I prefer editing the command history. In normal mode, type: q: This will give you a list of recent commands, editable and searchable with normal vim commands. You'll start on a blank command line at the bottom. For the exact thing that the article asks, pasting a yanked line (or yanked anything) into a command line, yank your text and then: q:p (get into command history edit mode, and then (p)ut your yanked text into a new command line. Edit at will, enter to execute. To get out of command history mode, it's the opposite. In normal mode in command history, type: :q<enter>
- india 14y agoOh this is what that is! I accidentally reach this mode now and then and wonder how I got there and what it does. I must be accidentally pressing q: instead of :q ! This is great and useful. Thanks!
- antidoh 14y agoThat's exactly how I found it, by accident. I think a lot of people do.
- wmwong 14y agoSame here. You can also do q/ which gives you the history of your searches.
- pyre 14y agoYou can get to search history mode this way too. E.g.: q/ - Search string history q: - Ex cmdline history q? - Search string history Also note that if you normally use Ctrl-C to exit Insert mode, that fails here as Ctrl-C will close the history buffer. You need to use Escape or Ctrl-[.
- emillon 14y ago> To get out of command history mode, it's the opposite. You can leave command history just by typing <enter>, not :q<enter>.
- jyap 14y ago... That only applies if you haven't moved your cursor to a line in the command history which doesn't have commands. Otherwise just hitting <enter> will run that command line. So it's safer to tell people to enter :q<enter>
- q_revert 14y agoanother way to get into this mode is to start doing a complex command.. so :%s/ and when you realise it's not as simple as you first thought.. doing ^f will take you "command line" buffer where you can do all the normal vim commands.. as for copy/paste .. if your vim is compiled with the option "+clipboard" then you can use the "+" register to interact with all your system copy/pasting.. however, what I most frequently end up doing is entering paste mode (:set paste) and just using my terminal emulator's paste buffer.. you can also sync these using tmux's buffers etc if you want, but it's a little less elegant imo.. once you have set/unset paste mode aliased to something sensible it makes the whole process as simple as it gets imo for your vimrc nmap <silent> <leader>p :set invpaste<CR>:set paste?<CR>
- tammer 14y agoYou, sir, are a genius and a scholar. Do you have any idea how many tutorials there are out there that involve some kind of obscure plugin or xclip incantation for something as simple as pasting text over ssh with formatting? To think all I needed to do was :set paste... Extraordinary.
- solutionyogi 14y agoHoly mother of god, this is one amazing tip. I never knew about this mode. Thank you for sharing!
- slurgfest 14y agoThe title "pasting text into vim" is kind of wrong. This isn't really about pasting text into vim, that is a very easy thing you learn in your first hour of vim (press p or at worst "+p). It is about the more meta activity of pasting text (e.g. representing a vim command or an argument to a vim command) into the vim command line.
- a3_nm 14y agoWhen I read "pasting text into vim", I thought of still another thing: ":set paste".
- kajecounterhack 14y agoI thought the same. That one stumped me for a while when I was starting out in vim.
- nsheridan 14y agoMy .vimrc contains: set pastetoggle=<F2> Life is suddenly easier :)
- tux1968 14y agoMy .vimrc contains : set pastetoggle=<Esc>[201~ noremap <Esc>[200~ :set paste<cr>0i inoremap <Esc>[200~ <c-o>:set paste<cr> cnoremap <special> <Esc>[200~ <nop> cnoremap <special> <Esc>[201~ <nop> let &t_ti="\<esc>[?2004h" let &t_te="\<esc>[?2004l" the ti/te sequences are passed from Vim to the client which tells Putty (and others) to bracket all pasting with \e[200~ and \e[201~. The other commands handle these sequences to make pasting happen transparently without having to hit F2 ;o)
- kevinburke 14y agoYou can also yank from Vim to the system clipboard with "+y Took me a year or so to learn that one
- srijan4 14y agoOr, you can add this to your vimrc to always yank to system clipboard: set clipboard+=unnamed
- LauriL 14y agoA very helpful setting. Thanks! I've been using the "+ register intensively. Your tip will save me from quite a lot of keystrokes in the future.
- lloeki 14y agoOf course it only works for non-terminal vim. Someone may make it work on Mac though by leveraging pb{copy,paste} in some clever way (can't remember the X11 equivalent ATM)
- natedub 14y agoIt can work in terminal vim, too. I believe the special + register for the system clipboard is enabled by a compile option, but that may not be entirely accurate. I have Vim 7.3 installed via Macports and it works for me.
- lloeki 14y agoI use OSX default vim. That might explain things. I'll try brew install macvim --override-system-vim to see if things improve. EDIT: it works.
- mhd 14y agoYes, it's the "+clipboard" option (as shown by :version). If you weren't doing macports (or brew) already, the downloadable MacVIM version does include a "Vim" binary that's usable on the commandline. Somewhere in /Applications/MacVIM.app/... (can't check at work). Just symlinking or simply setting `alias vim='<path_to_binary>` works perfectly. [MacVim]: http://code.google.com/p/macvim/ http://code.google.com/p/macvim/
- herouic 14y agotmux buffers Will solve your copy and paste problems across all UNIX applications. Thank you Mr. Marriott. Great software.
- ibotty 14y agodoesn't really help with content in vim's registers... (but you are right, tmux is great)
- herouic 14y agoDon't yank text to vim registers. Copy it to tmux buffers. 1. Ctrl-B [ 2. Ctrl-Space 3. copy desired text 4. Ctrl-w 5. ESC+Shift-: 6. Ctrl-B ] to paste on the vim command line
- AjithAntony 14y agoAnd copy mode in screen CTRL-{
- arocks 14y agoNot to start an editor war or anything. But a comparable feature set can be found in Emacs[1]. [1]: http://www.gnu.org/software/emacs/manual/html_node/emacs/Registers.html http://www.gnu.org/software/emacs/manual/html_node/emacs/Reg...
- tikhonj 14y agoYou can also put window configurations into registers. C-x r w r puts your current window configuration (what windows you have open, their sizes and the positions in their buffers) into register r and C-x r j r jumps to that configuration. I personally find this extremely useful--I use it far more than any other register-based feature. Of course I effectively use Emacs as my window manager for everything except web browsing, ergo I am certifiably insane. And if ezbl or a similar project ever matures, I might start browsing from Emacs too :P.
- bowyakka 14y agoSorry I am a massive vim junkie, but why is this getting so much love ?
- stuartmemo 14y agoBecause people are learning something they didn't know?
- yitchelle 14y agoMaybe many HN readers are also VIMphiles.
- itmag 14y agoThat's correct, and there doesn't seem to be that many emacs people here. What gives?
- deleted 14y ago[deleted]
- s00pcan 14y agoBetween the clipboard register ("+y "+p) and tmux's copy mode, I can move text from pretty much anywhere to/from the command line.
- LauriL 14y agoHere is how you can paste the word under cursor to the command line: C-r-w Handy for renaming variables with :%s/oldname/newname/g, for example.