29

After searching through, I figured ctrl+b ( PREFIX ) then ctrl + arrow should resize the current pane. But it is not working. Am I missing anything ?

Thanks.

  • FYI, I did adjust the width with PREFIX : resize-pane, but still wondering why the above command should not work. – Biswanath Oct 15 '13 at 3:33
  • should prob be on apple.stackexchange.com – Alex Leach Nov 29 '13 at 15:39
38

Probably your terminal is not sending a (distinct) sequence when you hold Control and press an arrow key.

Try running cat and typing the keys into it (Control-C to quit). You will probably find that (e.g.) Up and Control-Up both generate the same sequence.

OS X Terminal application

In its default configuration the OS X Terminal application sends the sequence ^[[A (or ^[OA) whether you type Up or Control-Up (also any combination with Shift and Option, too).

However, you can reconfigure Terminal to send appropriate codes. It is a bit tedious, but you usually only have to do it once.

  1. Terminal > Preferences…
  2. Settings top-level tab
  3. pick the profile you want to modify
  4. Keyboard tab
  5. click the plus button to add a new binding

    • pick a cursor key
    • set the modifier to control
    • use the Send Text: action
    • type Escape (will show up as \033) followed by [1;5 and one more character:
      • A for Up,
      • B for Down,
      • C for Right, or
      • D for Left
    • click OK to add the binding

For example, the final sequence for Control-Up should end up looking like \033[1;5A.

These sequences are the ones that XTerm generates (see the ctlseqs documentation for details).

Repeat the last step for the other arrow keys.

iTerm 2

iTerm 2 sends the expected sequence by default.

  • Indeed, the Ctrl + { arrow keys} are mapped for switching application. They are not sending the sequence. – Biswanath Oct 20 '13 at 2:41
  • 19
    I tried this on a vanilla Mavericks machine (MBP retina late-2013), but it didn't work without also deactivating all Ctrl+Arrow key shortcuts in System Preferences -> Keyboard -> Shortcuts -> Mission Control. +1 for the tip on using cat to see keyboard events – Alex Leach Nov 29 '13 at 15:37
  • works fine until i start tmux. I get ^[[1;5A^[[1;5B before launching tmux, but ^[OA^[OB in tmux. – nakhli Apr 27 '15 at 15:31
  • 1
    @Sinbadsoft.com: It sounds like you do not have xterm-keys enabled for that tmux window; you may want to set -gw xterm-keys on. – Chris Johnsen Apr 27 '15 at 21:21
  • works perfectly for me (el capitan). – ling Feb 4 '16 at 14:25
10

On at least Mavericks and iTerm2, you have to hold Control, then press b (instead of holding), then hold down a directional button. This sends pretty much the same sequences as holding down Control-b with a directional button so it works.

Also, make sure to head over to keyboard settings and in shortcuts tab disable any mission control and such keyboard shortcuts you may have for Control plus a directional key.

  • 6
    thanks! changing the mission control/app windows bindings in Keyboard Shortcuts made the difference for me – sixty4bit Jun 11 '15 at 20:44
4

You can use the meta key instead of the control key in the ctrl-↑ and ctrl-↓ combinations. In OSX Terminal the default meta key is the escape key. For example, to increase the size of a pane type ctrl-b esc-↑.

I find the escape key a pain to reach so I use the option key as the meta key instead. In Terminal.app you can change it by going to Terminal > Preferences > Profiles > Keyboard : check the "Use Option as Meta Key".

Now you can type ctrl-b option-↑ to increase the size or ctrl-b option-↓ to decrease the size and you don't have to remap the mission control keys.

  • Using Escape was only solution as holding Ctr+Arrow by default on my MacOS shifts to another desktop. – klimat Jul 22 '18 at 17:40

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.