Newbie question about mapping...

16 views
Skip to first unread message

Sonny Chee

unread,
May 25, 2015, 11:43:02 PM5/25/15
to vim...@googlegroups.com
Hey Guys,

I am attempting to create an insert mapping that (when ctrl-d is pressed) will convert the current word to uppercase. I'm not sure why it doesn't work...

inoremap <c-d> <esc>viwU<esc>i

Gary Johnson

unread,
May 26, 2015, 12:44:30 AM5/26/15
to vim...@googlegroups.com
It works for me. It works better, though, using 'gi' instead of
'i' so that the cursor position is restored to the place where the
mapping was executed:

:inoremap <c-d> <esc>viwU<esc>gi

How does it not work for you? "[I]t doesn't work" is not much to go
on.

Regards,
Gary

Sonny

unread,
May 26, 2015, 1:13:48 AM5/26/15
to vim...@googlegroups.com
Hey Gary,

Thank you for your response.

I'm not sure what the deal is... but the mapping is working after I exited and then re-started vim....



--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to a topic in the Google Groups "vim_use" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/vim_use/A-J-dAXwhxw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to vim_use+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Sonny.
----------------------------------------------------------------------------
Be true to your work, your word, and your friend. Henry David Thoreau.

Sonny

unread,
May 26, 2015, 1:25:12 AM5/26/15
to vim...@googlegroups.com
Actually, I think I know what was causing the issue.... While in INSERT mode, I had moved the cursor to the first letter in the word and then pressed ctrl-d.  Going from insert to normal mode causes the cursor to move to the left, since there was no longer a word beneath the cursor, nothing was upper-cased....

Does anyone know how I can prevent the cursor from moving when I go from INSERT to normal mode... or revise my mapping so that it works regardless of where the cursor is within the word when ctrl-d is pressed?

Paul Isambert

unread,
May 26, 2015, 1:58:42 AM5/26/15
to vim...@googlegroups.com
> Does anyone know how I can prevent the cursor from moving when I go from
> INSERT to normal mode...

That’s Vim’s usual behavior.

> or revise my mapping so that it works regardless
> of where the cursor is within the word when ctrl-d is pressed?

You can use <C-O> instead of going in full normal mode:

inoremap <C-D> <C-O>gUiw

The problem is that you will end up at the beginning of the word, no
matter where you started. Perhaps that’s not a problem?

Best,
Paul

Youen Lansade

unread,
May 26, 2015, 2:35:33 AM5/26/15
to vim...@googlegroups.com
You could start the command by inserting a character and delete it after you get back in insert mode:
 
  :inoremap <c-d> _<esc>viwU<esc>gi<bs>
 
Also, the second esc is useless since pressing U should take you back to normal mode:
 
  :inoremap <c-d> _<esc>viwUgi<bs>
 
And, although it's not wrong to go into visual mode to set some text uppercase, it's interesting to know vim has normal mode commands to change the case of letters. For example, to set the current word to uppercase, you could use gUiw. For more informations: :h case
 
Youen

Sonny

unread,
May 26, 2015, 12:17:03 PM5/26/15
to vim...@googlegroups.com
Thanks guys, particularly Youen.  Those were helpful. 

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to a topic in the Google Groups "vim_use" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/vim_use/A-J-dAXwhxw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to vim_use+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages