I have my gvim setup so that I can select word-wise with Ctrl-Shift-Right, Ctrl-Shift-Left etc. (yes, I know it's a bad habit, but it works for me..).

Unfortunately, these key combinations delete text when used in console vim inside a screen session. I believe this is because the two key combinations produce the codes Esc[1;6D and Esc[1;6C on the terminal, which are interpreted as "delete next 6 lines" or "change next lines", respectively.

Is there some way to stop screen or console vim from interpreting these key combinations?

UPDATE: Content of my .screenrc:

sessionname daku
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

Clearly Vim doesn't have a binding for the key sequence ␛[1;6D but has one for some other key sequence that begins with ␛[1, probably ␛[1~ (usually sent by the Home key). Add remappings to your .vimrc to declare that ␛[1;6D is really Ctrl+Shift+Left and so on. I think the following should do the trick:

noremap <ESC>[1;6D <C-S-Left>
noremap! <ESC>[1;6D <C-S-Left>
noremap <ESC>[1;6C <C-S-Right>
noremap! <ESC>[1;6C <C-S-Right>

Here's what I have in my .vimrc:

function Allmap(mapping)
  execute 'map' a:mapping
  execute 'map!' a:mapping
function Allnoremap(mapping)
  execute 'noremap' a:mapping
  execute 'noremap!' a:mapping
call Allmap('<ESC>[6D <C-S-Left>')
call Allmap('<ESC>[6C <C-S-Right>')
call Allnoremap('<C-S-Left> <C-Left>')
call Allnoremap('<C-S-Right> <C-Right>')
  • Doesn't quite work; see my updated answer. – daniel kullmann Jan 23 '12 at 8:20
  • @danielkullmann Sorry, I was careless in copying code from my .vimrc. I've updated my answer, which still doesn't exactly match yours. Please move your answer from your question to an answer. – Gilles 'SO- stop being evil' Jan 24 '12 at 1:15
  • why do you call map twice for each key combination? – daniel kullmann Jan 24 '12 at 7:44
  • @danielkullmann :map and :map! cover different modes (normal & friends vs insert & friends). – Gilles 'SO- stop being evil' Jan 24 '12 at 15:16
  • In linux, both ctrl+leftarrow and ctrl+rightarrow goes to right position with this answer. – Arda May 28 '14 at 10:35

This is what is in my .vimrc now:

if ! has("gui_running")
  noremap  <ESC>[1;6D <C-S-Left>
  inoremap <ESC>[1;6D <C-S-Left>
  noremap  <ESC>[1;6C <C-S-Right>
  inoremap <ESC>[1;6C <C-S-Right>
  • In linux (ubuntu 14.04, default terminal), both ctrl+leftarrow and ctrl+rightarrow goes to right position with this answer on my case. – Arda May 28 '14 at 10:35

Move the binding from ~/.vimrc into ~/.gvimrc.

  • This happens everywhere, also on computers where I don't have a .vimrc. – daniel kullmann Jan 19 '12 at 14:18
  • What is in your .screenrc? – William Pursell Jan 19 '12 at 15:01

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.