On Wed, 13 Jul 2011, Christian Brabandt wrote:

On Tue, July 12, 2011 5:38 pm, Nathan Neff wrote:
Interestingly, if I use:

iabbrev <lt>s whatever

it works.

This means, when vim parses this iabbrev, it will replace the <lt> by '<', so you trigger your abbreviation by typing <s (as you probably already know, just want to point out the obvious).

But why is it necessary to use <lt> for Nathan? If I put the original line:

iabbrev <s #+begin_src groovy

into my .vimrc, it works fine. I even wrapped it in :set cp and :set nocp, fiddled with the '<' and 'k' options of 'cpo', and tried varied settings for 'isk' and 'isi'.

:help <>
#3 states that: "When there is no confusion possible, a '<' can be used directly."

Is something ambiguous about '<s'?

Nathan, can you try this modification?

iabbrev <w #+begin_src groovy

(curious if the 's' is being interpreted as shift (:help shift))


If I use

iabbrev <lt>sg whatever then it fails with "Invalid argument". It looks like vim trips up if the abbreviation is > 2 chars if I'm using the <lt>

Again, when parsing this abbreviation, vim will replace the <lt> by '<'. So you would need to enter <sg to trigger this abbreviation.

Now you need to know, that there are three types of abbreviations, as detailed by :h abbreviations. You are abbreviation '<s' is of kind end-id. But, the abbreviation <sg is of neither type, so it is invalid.

For more info:

:help abbrev | /end-id

I still don't understand why things like 'a.b' and '#def' aren't possible for abbreviations (anyone have a simple example of why that's difficult to handle?), but probably more of a vim-dev question.

--
Best,
Ben

--
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

Reply via email to