camelcasemotion : Motion through CamelCaseWords and underscore_notation. 
 
 
  |  script karma  | 
  
    Rating 273/93,
    Downloaded by 10968   | 
  
   Comments, bugs, improvements 
   | 
  
    Vim wiki
   |   
 
 
 
| created by |  
| Ingo Karkat |  
|   |  
| script type |  
| utility |  
|   |  
| description |  
DESCRIPTION
 Vim provides many built-in motions, e.g. to move to the next word, or end of
 the current word. Most programming languages use either CamelCase
 ("anIdentifier") or underscore_notation ("an_identifier") naming conventions
 for identifiers. The best way to navigate inside those identifiers using Vim
 built-in motions is the [count]f{char} motion, i.e. f{uppercase-char} or f_,
 respectively. But we can make this easier:
 
 This plugin defines motions ,w ,b and ,e (similar to w b e), which do
 not move word-wise (forward/backward), but Camel-wise; i.e. to word boundaries
 and uppercase letters. The motions also work on underscore notation, where
 words are delimited by underscore ('_') characters. From here on, both
 CamelCase and underscore_notation entities are referred to as "words" (in
 double quotes). Just like with the regular motions, a [count] can be prepended
 to move over multiple "words" at once. Outside of "words" (e.g. in non-keyword
 characters like // or ;), the new motions move just like the regular motions.
 
 Vim provides a built-in iw text object called 'inner word', which works in
 operator-pending and visual mode. Analog to that, this plugin defines inner
 "word" text objects i,w i,b and i,e, which select the "word" (or
 multiple "words" if a [count] is given) where the cursor is located.
 
 SOURCE
 Based on vimtip #1016 by Anthony Van Ham
     http://vim.wikia.com/wiki/Moving_through_camel_case_words
 
 SEE ALSO
 - CamelCaseComplete (vimscript #3915) provides insert mode completion that
   expands CamelCaseWords and underscore_words based on anchor characters for
   each word fragment.
 
 RELATED WORKS
 - mlessnau_case (vimscript #4641) provides sort-of text objects vic, dic, cic,
   but it seems to use a simplistic regexp for selection.
 - txtobj-underscore (https://github.com/lucapette/vim-textobj-underscore) uses
   vim-textobj-user to define a_ and i_ text objects.
 
 USAGE
 Use the new motions ,w ,b and ,e in normal mode, operator-pending mode
 (cp. operator), and visual mode. For example, type bc,w to change "Camel"
 in "CamelCase" to something else.
 
 EXAMPLE
 Given the following CamelCase identifiers in a source code fragment:
     set Script31337PathAndNameWithoutExtension11=%~dpn0
     set Script31337PathANDNameWITHOUTExtension11=%~dpn0
 and the corresponding identifiers in underscore_notation:
     set script_31337_path_and_name_without_extension_11=%~dpn0
     set SCRIPT_31337_PATH_AND_NAME_WITHOUT_EXTENSION_11=%~dpn0
 
 ,w moves to ([x] is cursor position): [s]et, [s]cript, [3]1337, [p]ath,
     [a]nd, [n]ame, [w]ithout, [e]xtension, [1]1, [d]pn0, dpn[0], [s]et
 ,b moves to: [d]pn0, [1]1, [e]xtension, [w]ithout, ...
 ,e moves to: se[t], scrip[t], 3133[7], pat[h], an[d], nam[e], withou[t],
     extensio[n], 1[1], dpn[0]
 
 TEXT OBJECTS
 i,w                 "inner "word" forward", select [count] "words", including
                     the _ separator in underscore_notation
 i,b                 "inner "word" backward", select [count] "words" from the
                     cursor position to the left, excluding the _ separator in
                     underscore_notation
 i,e                 "inner to the end of "word"", select [count] "words",
                     excluding the _ separator in underscore_notation
 
                     Inside CamelWords, there is no difference between i,w
                     and i,e. Unless [count] is larger than 1, i,b and
                     i,e are identical.
 EXAMPLE
 Given the following identifier, with the cursor positioned at [x]:
     script_31337_path_and_na[m]e_without_extension_11
 
 v3i,w selects script_31337_path_and_[name_without_extension_]11
 v3i,b selects script_31337_[path_and_name]_without_extension_11
 v3i,e selects script_31337_path_and_[name_without_extension]_11
 Instead of visual mode, you can also use c3i,w to change, d3i,w to delete,
 gU3i,w to upper-case, and so on.
 
 BOUNDARIES
 All the normal word boundaries of the w, b, and e motions apply here as
 well: whitespace, sequences of keyword characters and non-keyword-characters.
 Boundaries between underscore_notation are defined by the "_" character.
 A new CamelWord starts with an uppercase letter ("Camel", "ACRONYM", "C####")
 or a number ("123", "42foo#bar"). |  
|   |  
| install details |  
INSTALLATION
 This script is packaged as a vimball. If you have the "gunzip" decompressor
 in your PATH, simply edit the *.vba.gz package in Vim; otherwise, decompress
 the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
 vimball or via the :UseVimball command.
     vim camelcasemotion.vba.gz
     :so %
 To uninstall, use the :RmVimball command.
 
 DEPENDENCIES
 - Requires Vim 7.0 or higher.
 
 CONFIGURATION
 For a permanent configuration, put the following commands into your vimrc:
 
 There's a special case dating back to vi that cw does not include the
 whitespace after a word; it works like ce. If you want the same special case
 for the c,w motion and ciw text object, define the following additional
 mapping:
     nmap c,w c,e
 Likewise, the iw text object does not include trailing whitespace. If you
 want the camelcasemotion text objects behave the same way, add:
     " Must define the default mappings first in order to change them.
     runtime plugin/camelcasemotion.vim
     omap i,w i,e
     xmap i,w i,e
 If you're using different mappings (see below), you need to adapt the
 arguments, naturally.
 
 By default, all mappings start with , (comma) as the map leader instead of
 using <Leader>. I personally find the default <Leader> key too far off the
 keyboard to be useful for custom motions (which also cannot be repeated via
 the . (dot) command, so they should be very fast to type repeatedly), but
 quite suitable for general, less frequently used custom mappings.
 To avoid losing the (rarely used) , mapping (which repeats latest f, t, F or
 T in opposite direction), you can remap it to ,,:
     nnoremap ,, ,
     xnoremap ,, ,
     onoremap ,, ,
 
 If you want to use different mappings, map your keys to the
 <Plug>CamelCaseMotion_? mapping targets _before_ sourcing the script (e.g. in
 your vimrc).
 
 EXAMPLE: Replace the default w, b and e mappings instead of defining
 additional mappings ,w, ,b  and ,e :
     map w <Plug>CamelCaseMotion_w
     map b <Plug>CamelCaseMotion_b
     map e <Plug>CamelCaseMotion_e
     sunmap w
     sunmap b
     sunmap e
 In this case, you probably want to restore the special camelcasemotion-c,w
 behavior, too:
     nmap cw ce
 For consistency, the i_CTRL-W command probably should observe the word
 fragments, too. This is a simplistic attempt:
     imap <C-w> <C-o>d<Plug>CamelCaseMotion_ie
 But it fails when inside a word or with trailing whitespace.
 
 EXAMPLE: Replace default iw text-object and define analog ib and  ie
 motions:
     omap iw <Plug>CamelCaseMotion_iw
     xmap iw <Plug>CamelCaseMotion_iw
     omap ib <Plug>CamelCaseMotion_ib
     xmap ib <Plug>CamelCaseMotion_ib
     omap ie <Plug>CamelCaseMotion_ie
     xmap ie <Plug>CamelCaseMotion_ie
 In this case, you probably want to restore the special camelcasemotion-c,w
 behavior, too:
     " Must define the default mappings first in order to change them.
     runtime plugin/camelcasemotion.vim
     omap iw ie
     xmap iw ie |  
|   |  
 
script versions (upload new version)
Click on the package to download.
 
 
        | camelcasemotion.vba.gz | 
    1.52 | 
    2011-11-12 | 
    7.0 | 
    Ingo Karkat | 
    - FIX: Correct forward-to-end motion over lowercase part in "lowerCamel". Found this by chance in GitHub fork by Kevin Lee (bkad). 
 - BUG: Correct wrong stop on second letter of ACRONYM at the beginning of a word "AXBCText". 
 - The motion functionality is automatically tested via a runVimTests (vimscript #2565) test suite.  | 
 
        | camelcasemotion.vba.gz | 
    1.50 | 
    2009-05-05 | 
    7.0 | 
    Ingo Karkat | 
    - Do not create mappings for select mode; according to|Select-mode|, printable
   character commands should delete the selection and insert the typed
   characters. Now using :xmap to only target visual mode. 
 - Moved functions from plugin to separate autoload script. 
 - Split off documentation into separate help file. Now packaging as VimBall.  | 
 
        | camelcasemotion.vim | 
    1.40.017 | 
    2008-05-19 | 
    7.0 | 
    Ingo Karkat | 
    BF: Now using :normal! to be independent from any user mappings. Thanks to Neil Walker for the patch. | 
 
        | camelcasemotion.vim | 
    1.40.016 | 
    2008-04-28 | 
    7.0 | 
    Ingo Karkat | 
    BF: Wrong forward motion stop at the second digit if a word starts with multiple numbers (e.g. 1234.56789). Thanks to Wasim Ahmed for reporting this.  | 
 
        | camelcasemotion.vim | 
    1.40.015 | 
    2008-04-24 | 
    7.0 | 
    Ingo Karkat | 
    ENH: Added inner "word" text objects 'i,w' etc. that work analoguous to the built-in 'iw' text object. Thanks to David Kotchan for this suggestion.  | 
 
        | camelcasemotion.vim | 
    1.30.014 | 
    2008-04-20 | 
    7.0 | 
    Ingo Karkat | 
    The motions now also stop at non-keyword boundaries, just like the regular motions. This has no effect inside a CamelCaseWord or inside underscore_notation, but it makes the motions behave like the regular motions (which is important if you replace the default motions). Thanks to Mun Johl for reporting this.  | 
 
        | camelcasemotion.vim | 
    1.30.013 | 
    2008-04-09 | 
    7.0 | 
    Ingo Karkat | 
    Allowing users to use mappings different than ,w ,b ,e by defining <Plug>CamelCaseMotion_? target mappings. This can even be used to replace the default 'w', 'b' and 'e' mappings, as suggested by Mun Johl. 
 Now requires VIM 7.0 or higher.  | 
 
        | camelcasemotion.vim | 
    1.20.012 | 
    2007-06-06 | 
    6.0 | 
    Ingo Karkat | 
    BF: Corrected motions through mixed CamelCase_and_UnderScore words by re-ordering and narrowing the search patterns.   | 
 
        | camelcasemotion.vim | 
    1.20.011 | 
    2007-06-02 | 
    6.0 | 
    Ingo Karkat | 
    Thanks again to Joseph Barker for discussing the complicated visual mode mapping on the vim-dev mailing list and coming up with a great simplification.  | 
 
        | camelcasemotion.vim | 
    1.20.010 | 
    2007-05-30 | 
    6.0 | 
    Ingo Karkat | 
    ENH: The visual mode motions now also (mostly) work with the (default) setting 'set selection=inclusive' / 'behave xterm', instead of selecting one character too much. So far, you had to 'set selection=exclusive' / 'behave mswin'.  | 
 
        | camelcasemotion.vim | 
    1.10.009 | 
    2007-05-30 | 
    6.0 | 
    Ingo Karkat | 
    Incorporated major improvements and simplifications done by Joseph Barker:
 Operator-pending and visual mode motions now accept [count] of more than 9. 
 Visual selections can now be extended from either end. 
 Instead of misusing the :[range], the special variable v:count1 is used. Custom commands are not needed anymore. 
 Operator-pending and visual mode mappings are now generic: There's only a single mapping for ,w that can be repeated, rather than having a separate mapping for 1,w 2,w 3,w ...
 BF: The operator-pending and visual mode ,e mapping doesn't work properly when it reaches the end of line; the final character of the moved-over "word" remains. Fixed this problem unless the "word" is at the very end of the buffer. 
 BF: Degenerate CamelCaseWords that consist of only a single uppercase letter (e.g. "P" in "MapPRoblem") are skipped by all motions. Thanks to Joseph Barker for reporting this. 
 BF: In CamelCaseWords that consist of uppercase letters followed by decimals (e.g. "MyUPPER123Problem", the uppercase "word" is skipped by all motions.  | 
 
        | camelcasemotion.vim | 
    1.00.007 | 
    2007-05-22 | 
    6.0 | 
    Ingo Karkat | 
    Initial upload | 
 
 
ip used for rating: 216.73.216.208
           |