How do you increase or decrease the height or width of a vim buffer in a way so that when you hold down the key combo, the buffer size constantly changes?

I know CTRL W < works but it moves it one unit at a time. I am looking for a way that when you do CTRL W < and hold down the < that VIM changes the buffer's width fluidly(constantly) until you let go of the <.

  • 1
    You could use . to repeat the last action. – Phoshi Dec 6 '10 at 20:22
  • 2
    @Phoshi: I think that's just for editing actions. In fact, help . says "Does not repeat a command-line command." – Dennis Williamson Dec 6 '10 at 21:22
  • @Dennis; Oh, looks like you're right, my apologies! – Phoshi Dec 6 '10 at 22:08
  • or could you CTRL W any_number < – elmonkeylp Mar 27 '15 at 21:14

Try these:

:nmap ^[> :vertical res +1^M
:nmap ^[< :vertical res -1^M

To input the ^[, press Ctrl-v then Esc. To input the ^M, press Ctrl-v then Enter.

As suggested by Heptite in a comment, you can use key-notation instead of literal characters:

:nmap <Esc>> :vertical res +1<Enter>
:nmap <Esc>< :vertical res -1<Enter>

Results in the same mapping as the example at the top.

Now you can hold down Alt-Shift-> to smoothly increase the width or Alt-Shift-< to smoothly increase it. It feels kind of weird using it in the right-hand window to me, because I think that I'm moving the separator left and right, but that's not what's happening.

For changing the size of horizontally split windows:

:nmap ^[+ :res +1^M
:nmap ^[- :res -1^M

These are the regular plus and minus keys rather than the ones on the keypad. On my US keyboard, in addition to Alt, I hold Shift for +, but no Shift for -.

  • 3
    You may use the string <esc> (with the angle brackets) in place of hard-coding escape characters. – Heptite Dec 6 '10 at 23:10
  • I tried this, but it only work one time, and then I have to press escape and then it works for one time only. – Amit Yadav Jun 15 '16 at 9:50
  • @AmitYadav: It works for me. See my answer for a small typo correction and some clarification. – Dennis Williamson Jun 15 '16 at 16:12

You can also use 10 ctrl-w < or 10 ctrl-w > to change it by 10 units.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.