5 ms·
Advanced tricks with vim registers
- nyellin 15y agoMy favorite trick is using capital-letters to append to registers: "kyy - copy a line to register k "Kyy - append a line to register k
- Symmetry 15y agoA great trick I didn't know about was the 0 register. I've lost tracked of the number of times I've copied some text, and then deleted something by mistake not realizing I'd overwritten the default register. I could still have pasted what I wanted with "0p, though.
- nyellin 15y agoYou can also use "2p to paste the second to last deletion.
- Davertron 15y agoI didn't know about that trick either. I've been using YankRing (http://www.vim.org/scripts/script.php?script_id=1234 http://www.vim.org/scripts/script.php?script_id=1234) which would get me around the same problem. Basically, you hit p to paste, and if it's not what you want, you keep hitting C-p (control+p) and it will move backwards through time and keep pasting. Once you paste what you want, you're done! Awesome plugin that I can't live without.
- mcantor 15y ago- How do delete without clobbering the "clipboard" register: Delete to the "black hole register", "_". For example: "_dd - How to enter the solution to a quick math equation while in insert mode: Use the "expression register", "=". You can even use variables. For example: ^r=5325*30<ENTER> - How to edit a macro once you've recorded it: Paste, edit, and re-yank its register. For example, hitting "qq" will record to register "q". If you want to edit it, you can do "qp, make your changes, then visually select it and do "qy. - How to access prior contents in the clipboard: Use registers 0 - 9. For example, "0p will paste whatever was in the clipboard register before you yanked whatever's in there now. BONUS ROUND: - In command mode, how to insert the word currently under the cursor: ^r^w (That's Ctrl-r, Ctrl-w) - Insert a register's literal contents: For example, if you have a ^m (newline) character in the a register, but you want to input the ^m character instead of an actual newline while in insert mode: ^r^ra - Insert the full path of the filename currently under the cursor: ^r^f (This only works if it's in your 'path' variable, like with gf.)
- herTTTz 15y agoI use YankRing (http://www.vim.org/scripts/script.php?script_id=1234 http://www.vim.org/scripts/script.php?script_id=1234) which takes care of the problem of remembering yank history. Just map :YRShow to a key and you are good to go.
- guns 15y agoGive regbuf a try too: simpler implementation and features a buffer for previewing and editing registers. [1]: https://github.com/tyru/regbuf.vim https://github.com/tyru/regbuf.vim
- kjell 15y agoTo me it wasn't obvious, but with yankring after you hit p you can paste from older registers with ^p. Yankring then replaces "0 with "1. Another ^p replaces "1 with "2. So by repeatedly hitting ^p after a paste you can cycle back quite a ways. Way easier than ":reg, now where did that go?"
- jjcm 15y agoIf you guys are interesting in learning vim more, checkout vimcasts.org. Drew Neil does some really nice walkthroughs that are extremely helpful for beginner and intermediate vim users.
- Pewpewarrows 15y agoThe two "advanced" topics that I've never bothered to learn, despite my years of using vim, are registers and buffers. Thanks to the answers on SO and the comments here, I think I have a pretty good grasp of registers (the being able to paste yanked text after a delete would have saved me so much god-damn time). So all that leaves is buffers. I've traditionally been using tabs and splits for all my editing multitasking, with NERDTree and Command-T to open new files quickly. Is there anything to be gained from me learning/using buffers at this point? I don't know what benefits they offer, and I've never had any problems with my current tab & split setup. Any buffer evangelists out there that care to chime in?
- DEinspanjer 15y agoHidden buffers are the only important thing to me. I don't know if you might already have that turned on or not. If hidden buffers are enabled, you can open document A, make some changes, then open document B in the same window and you don't have to save the other document first. When you want to go back to it, you just use :b 1 If you use screen, you can think of buffers like windows. You can have multiple windows open but one is active at any moment, or you can split your screen into multiple regions and have multiple windows visible at the same time. In Vim, you can have multiple buffers open. You can interact with them one at a time through a single window or you can split the window and see multiple buffers at the same time. If you get used to using them like that, then things like the :bufdo command becomes handy for making changes to a bunch of docs at the same time and you can quickly bounce around documents without having to browse to them each time.
- mcantor 15y agoSurprise! You have been using buffers all this time. A "buffer" is just "a file in memory"; if you have 1 split on your screen, with a different file in each split, then you are viewing 2 buffers. The two things which will probably give you the biggest bang for your buck are: :ls Which lists all buffers currently in memory, and: :b Which supports tab completion, allowing you to instantly jump to any file with just a few keystrokes. You'll also probably enjoy Ctrl + 6 / Ctrl + ^, which swaps between two buffers. You'll need to do :set hidden before switching between buffers in a single window. Don't worry, though; if you try to quit without saving a modified buffer, or use :bd to delete a buffer without saving it, vim will yell at you.
- sixtofour 15y agoVim is the tech equivalent of "line movies." A line movie is one where guys (it's usually guys) throw lines back and forth at each other, usually in the current context. Princes Bride and Real Men are line movies. I love line movies. Vim lets geeks throw "vim tricks" back and forth at each other. I love Vim, and I love vim tricks. Good SO thread, and good HN thread. I never tire of Vim threads.