RFE: 'wordpat' option
- Vim Dev gurus:
The mailing list has been slow enough that several of us worried it
might be broken (or have unsubscribed us) so maybe this is a good time
to post a request for a new feature. I already raised this on the vim
users' list, but maybe starting a new thread will get more attention.
The motions w, b, e, and others depend on the definition of a word.
So do the text-object iw and insert-mode completion and <C-]> and
probably a lot of other things.
Currently, a word (:help word) consists of a sequence of keyword
characters (as specified by 'iskeyword'), separated by non-keyword
characters (or start of line or end of line). In other words, a word is
specified by the regular expression /\k\@<!\k\+/ .
I think this definition is too restrictive. I would like to have
an option, perhaps 'wordpat', that specifies what is considered a
keyword. The default would be '\k\@<!\k\+' .
Here are some examples where I am not satisfied with being able to
change 'iskeyword'. but being able to set 'wordpat' would make me happy.
Today (not every day) I want to treat words-with-hyphens as single
words, so I try
The problem--depending on my style manual--is that em-dashes are treated
as parts of words. This is the problem that came up recently on the vim
users' list. Given a 'wordpat' option, I could solve this with
:let &l:wordpat = '\(\k\|-\)\@<!\k\+\(-\k\+\)*'
For other uses, you might want to do something similar with '_' or '\.'
instead of '-' .
Personally, I am in the habit of including optional spaces:
$$ \alpha \beta \gamma = \alpha + \beta + \gamma . $$
I do this for readability and also so that word motions are more
convenient. Many others prefer to omit the optional spaces:
$$ \alpha\beta\gamma = \alpha+\beta+\gamma . $$
I like to do
so that "\alpha" is considered a single word, but I normally do not want
to consider "\alpha\beta\gamma" as a single word. (I almost wrote that
"no one" ever wants this, and I almost accused those who prefer to omit
the optional spaces of laziness, but then I remembered
:help design-flexible .) With my new proposal,
:let &l:wordpat = '\\\=\k\@<!\k\+'
would work well with either style.
In this and other languages, someVariablesHaveLongCamelCaseNames
and users sometimes want their word motions to go up to the next capital
letter. Details left to the reader.
In other languages, a more common style is the
long_var_name_with_underscores . Again, I leave the details to your