Damian Conway, "More Instantly Better Vim" - OSCON 2013
Why Vi and Vim Stack Exchange recommends it
Vi and Vim Stack Exchange answerers point people to it for the original source and explanation of Conway's search-highlight, column-highlight and vmath snippets that they copy into their vimrc.
Recommended by 6 people across 7 different months, 2015 to 2022.
Why Stack Overflow recommends it
Stack Overflow users link it when answering or asking Vim questions about visual block editing, dragging text, the dragvisuals plugin, and column-limit highlighting, since the talk demonstrates these techniques directly.
Recommended by 2 people across 2 different months, 2013 to 2018.
What it is
Damian Conway's OSCON 2013 talk, published by O'Reilly, is a roughly 39-minute collection of Vim tips, plugins and configuration tricks. It covers things like blinking search matches, highlighting long lines, DragVisuals and the vmath plugin for summing columns of numbers.
What people said
Strong rec Michael M. · 2013-10 · Stack Overflow · on “Remapping semicolon to colon in vim breaks ':ls'”
After watching Damian Conway's excellent Instantly Better Vim [this video] , I decided to switch Vim's colon and semicolon: nnoremap ; : nnoremap : ; This all works wonderfully, except for one small thing. When I type ;ls , I get the buffer listing (as expected), with the standard message to "Press ENTER or type command to continue." Often what I want to do is type something like :bd 2 4 9 to delete some buffers. However, with the new mapping, typing a semicolon doesn't work (it exits to a new blank command line), but neither does typing a colon (it acts as any other keypress, as far as I can tell)! Is there any way to get around this? I do tend to use the default semicolon functionality fairly f
Strong rec Rich · 2015-03 · Vi and Vim Stack Exchange · on “Set cursor colour different when on a highlighted word”
I use this snippet from Damian Conway's fantastic talk, More Instantly Better Vim [this video] (at 4m 59s). It causes the entire highlight to blink briefly when you leap between search results. " Damian Conway's Die Blinkënmatchen: highlight matches nnoremap <silent> n n:call HLNext(0.1)<cr> nnoremap <silent> N N:call HLNext(0.1)<cr> function! HLNext (blinktime) let target_pat = '\c\%#'.@/ let ring = matchadd('ErrorMsg', target_pat, 101) redraw exec 'sleep ' . float2nr(a:blinktime * 1000) . 'm' call matchdelete(ring) redraw endfunction If you want the change in highlighting to be more persistent, you could tweak this to call matchdelete at some other time (e.g. when the cursor moves). UPDATE: I r
Recommends statox · 2016-07 · Vi and Vim Stack Exchange · on “Interrupting (blink-highlighting) function if mapping is invoked again”
For the credit part I think the original code was made by Damian Conway for his really good More instantly better Vim [this video] talk. A tarball is available here [LINK] with the examples he shows in the talk. Now about your question, I might be wrong but the blinks comes from a `sleep` instruction and I don't think it is possible to interrupt such an instruction.
Recommends statox · 2017-02 · Vi and Vim Stack Exchange · on “What are the basics of vi editor?”
There are a lot of resources: vimtutor [LINK] , vimcast [LINK] , pratical vim [LINK] , mastering vim [LINK] , learning vi and vim [LINK] , instantly better vim [this video] ... But SE sites are not meant for listing and I think your question is too broad, instead you should try to search /r/vim [LINK] and maybe ask your question there.
Recommends Hotschke · 2018-04 · Vi and Vim Stack Exchange · on “Quickly calculate the total of a column of numbers”
vmap ++ from plugin vmath by Damian Conway Install plugin from github [LINK] (only 178 sloc) e.g. $ wget [LINK] -P ~/.vim/pack/manual/start/damians-tools/plugin Add mapping to your vimrc vmap <silent><expr> ++ VMATH_YankAndAnalyse() However, I would suggest to use something else, e.g. gA Move to the third colum 2f| and select the column in visual-block mode <C-V>G$ Press ++ (or your chosen mapping) Results are shown and stored in registers (sum in s ) Insert sum from register s , e.g. with "sp For a presentation of this plugin see the YouTube video Damian Conway, "More Instantly Better Vim" - OSCON 2013 [this video] (starting at minute 29).
Recommends gregory · 2018-08 · Stack Overflow · on “Is there a native way to shift text vertically in Vim while exchanging with an adjacent line?”
While sticking to native vim has it merits, sometimes it's not worth being such a purist. Visual blocks are one area worth enhancing with plugins. In your case, I recommend vim-schlepp [LINK] based on Damian Conway's dragvisuals.vim [LINK] plugin which makes dragging and duplication of visual blocks a joy. For more ideas on visual block plugins, just watch Conway's demo here [this video] .
Recommends Paul · 2019-11 · Vi and Vim Stack Exchange · on “Is it possible to use colorcolumn on specific lines only”
I can't help but feel that you are trying to limit the colorcolumn to the 81st (or so) column only when there actually is a line that goes beyond that column. I'm sorry, if I got your question wrong, because I'm a bit confused about rows vs columns... Anyway: this is what I have in my .vimrc : " Make 81st column stand out highlight ColorColumn ctermbg=magenta call matchadd('ColorColumn', '\%81v', 100) This is not my idea, it's taken from Damian Conway's video "more instantly better vim" [this video] Again: Sorry, if I misunderstood your question.
Recommends D. Ben Knoble · 2020-04 · Vi and Vim Stack Exchange · on “Locate cursor on the screen”
Damian Conway wrote some functions to help him find his cursor when jumping around with n . I'm sure they could be adapted for your use case (i.e., instead of the right-hand side being n:call ... , just do the call ). " This rewires n and N to do the highlighing... nnoremap <silent> n n:call HLNext(0.4)<cr> nnoremap <silent> N N:call HLNext(0.4)<cr> " EITHER blink the line containing the match... function! HLNext (blinktime) set invcursorline redraw exec 'sleep ' . float2nr(a:blinktime * 1000) . 'm' set invcursorline redraw endfunction " OR ELSE ring the match in red... function! HLNext (blinktime) highlight RedOnRed ctermfg=red ctermbg=red let [bufnum, lnum, col, off] = getpos('.') let matc
Recommends shalomb · 2022-12 · Vi and Vim Stack Exchange · on “Selecting and manipulating around visual blocks”
I'm particularly interested in what the presenter, Damian Conway, in this talk [this video] is doing as he selects the end of visual-block to effortlessly add quotes. In particular - what is happening around 36:57 [this video] [LINK] and around 37:02 [this video] mark as he adds these quotes? [LINK] I gather he is making use of the DragVisuals [LINK] which he authored to yank/duplicate the blocks of text. But it's the wizadry (IMO) he applies to the second block to wrap it in quotes, is not part of DragVisuals, and that part is really what I would like to decipher. The vertical blue bar looks like a CursorColumn being activated but it's also doing something in addition to pasting text at the beginnging and
Cites Lim H. · 2013-11 · Stack Overflow · on “Global plugin in VIM is not loaded”
I love the dragvisuals vim plugin introduced in Damien Conway's OSCON 2013 talk [this video] . There is a github clone for the plugin here: [LINK] . The problem is I can't get it to work. Here are the steps that I have taken: 1.Drop the script in my $VIMRUNTIME/plugin path and added the relevant settings to my .vimrc ru plugin/dragvisuals.vim vmap <expr> <LEFT> DVB_Drag('left') vmap <expr> <RIGHT> DVB_Drag('right') vmap <expr> <DOWN> DVB_Drag('down') vmap <expr> <UP> DVB_Drag('up') vmap <expr> D DVB_Duplicate() let g:dvb_trimws = 1 2.The script gets loaded successfully because it is output by :scriptnames /vim/runtime/path/dragvisuals.vim But all of the functions (DVB_Drag, DVB_Duplicate) are not