Permalink
Switch branches/tags
Find file
313f7d8 Jan 18, 2013
255 lines (194 sloc) 7.67 KB
*textobj-indent.txt* Text objects for indented blocks of lines
Version 0.0.6
Script ID: 2484
Copyright (C) 2008-2013 Kana Natsuno <http://whileimautomaton.net/>
License: So-called MIT/X license {{{
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}}}
CONTENTS *textobj-indent-contents*
Introduction |textobj-indent-introduction|
Interface |textobj-indent-interface|
Mappings |textobj-indent-mappings|
Customizing |textobj-indent-customizing|
Bugs |textobj-indent-bugs|
Changelog |textobj-indent-changelog|
==============================================================================
INTRODUCTION *textobj-indent-introduction*
*textobj-indent* is a Vim plugin to provide text objects to select a block of
lines which are similarly indented to the current line.
For example, if the content of a buffer as follows:
(here ">" means the current line under the cursor,
and "_" means a space to indent)
>
if some_condition_is_satisfied
> __if another_condition_is_satisfied
____call s:do_x()
__endif
__...
__endif
else
__...
endif
<
|<Plug>(textobj-indent-a)| will select lines as follows:
(here "|" indicates the selected line)
>
if some_condition_is_satisfied
>|__if another_condition_is_satisfied
|____call s:do_x()
|__endif
|
|__...
|__endif
else
__...
endif
<
|<Plug>(textobj-indent-i)| will select lines as follows:
>
if some_condition_is_satisfied
>|__if another_condition_is_satisfied
|____call s:do_x()
|__endif
__...
__endif
else
__...
endif
<
More variants are also available. See |textobj-indent-mappings| for the
details.
Requirements:
- Vim 7.2 or later
- |textobj-user| 0.3.8 or later (vimscript#2100)
Installation:
- Recommended way: Use vim-flavor <https://github.com/kana/vim-flavor>.
Latest version:
https://github.com/kana/vim-textobj-indent
Document in HTML format:
http://vim-doc.heroku.com/view?https://github.com/kana/vim-textobj-indent/blob/master/doc/textobj-indent.txt
==============================================================================
INTERFACE *textobj-indent-interface*
------------------------------------------------------------------------------
MAPPINGS *textobj-indent-mappings*
These key mappings are defined in Visual mode and Operator-pending mode.
<Plug>(textobj-indent-a) *<Plug>(textobj-indent-a)*
Select a block of lines which are similarly indented
to the current line. More precisely, it selects lines
which are:
- adjacent to the current line, and
- indented the same or more amount
as the current line, or empty line.
If the current line is empty, the indentation of the
next line will be used to select. If that line is
also ampty, the indentation of the next line of that
line will be used instead. And so forth.
See also |textobj-indent-introduction| for figures
which describe what lines to be selected by this
command.
<Plug>(textobj-indent-i) *<Plug>(textobj-indent-i)*
Like |<Plug>(textobj-indent-a)|, but it doesn't
include empty lines.
<Plug>(textobj-indent-same-a) *<Plug>(textobj-indent-same-a)*
<Plug>(textobj-indent-same-i) *<Plug>(textobj-indent-same-i)*
Like |<Plug>(textobj-indent-a)| or
|<Plug>(textobj-indent-i)|, but select a block of
lines with the same indentation level, not including
lines which are more indented than the current line.
For example, suppose you edit the following text:
(here ">" denotes the cursor position and "|" denotes
the current selection.)
>
if some_condition_is_satisfied
call special_stuff()
> endif
call normal_stuff()
<
|<Plug>(textobj-indent-same-a)| selects lines as
follows:
>
if some_condition_is_satisfied
call special_stuff()
>|endif
|call normal_stuff()
<
While |<Plug>(textobj-indent-a)| selects lines as
follows:
>
|if some_condition_is_satisfied
| call special_stuff()
>|endif
|call normal_stuff()
<
==============================================================================
CUSTOMIZING *textobj-indent-customizing*
*g:textobj_indent_no_default_key_mappings*
*:TextobjIndentDefaultKeyMappings*
This plugin will define the following key mappings in Visual mode and
Operator-pending mode automatically. If you don't want these key mappings,
define |g:textobj_indent_no_default_key_mappings| before this plugin is loaded
(e.g. in your |vimrc|). You can also use |:TextobjIndentDefaultKeyMappings|
to redefine these key mappings. This command doesn't override existing {lhs}s
unless [!] is given.
{lhs} {rhs} ~
----- ---------------------- ~
ai <Plug>(textobj-indent-a)
ii <Plug>(textobj-indent-i)
aI <Plug>(textobj-indent-same-a)
iI <Plug>(textobj-indent-same-i)
==============================================================================
BUGS *textobj-indent-bugs*
- The current selection is not extended like |aw| nor |ip|
whenever |<Plug>(textobj-indent-a)| or |<Plug>(textobj-indent-i)| is
repeated in Visual mode.
- So that [count] is just ignored.
- See |textobj-user-bugs| for further information.
==============================================================================
CHANGELOG *textobj-indent-changelog*
0.0.6 2013-01-18T20:45:38+09:00 *textobj-indent-changelog-0.0.6*
- Support vim-flavor <https://github.com/kana/vim-flavor>.
- Update |textobj-indent-introduction|.
0.0.5 2012-03-30T21:47:34+09:00 *textobj-indent-changelog-0.0.5*
- Fix typos in the document. Thanks to Ujihisa and John Tyree for
reporting the mistake.
- Revise |textobj-indent-contents|.
0.0.4 2012-03-24T14:48:22+09:00 *textobj-indent-changelog-0.0.4*
- Refine the document a bit.
- Refine the internal structure a bit.
0.0.3 2009-08-30T12:06:37+09:00 *textobj-indent-changelog-0.0.3*
Incompatible changes:
- Requrie |textobj-user| 0.3.8 or later.
Major improvements:
- Add |<Plug>(textobj-indent-same-a)| and
|<Plug>(textobj-indent-same-i)|.
Minor improvements:
- Revise the document a bit.
- Add tests.
- Fix a minor bug.
- Revise to be autoloaded.
0.0.2 2009-04-17T17:45:31+09:00 *textobj-indent-changelog-0.0.2*
- Fix the bug to calculate indentation levels. Now these text objects
target a set of lines with the same indentation as you see.
0.0.1 2009-02-27T13:04:37+09:00 *textobj-indent-changelog-0.0.1*
- Add |<Plug>(textobj-indent-a)| and |<Plug>(textobj-indent-i)|.
- Remove |<Plug>(textobj-indent)|.
Use |<Plug>(textobj-indent-a)| instead.
0.0.0 2008-12-13T23:04:37+09:00 *textobj-indent-changelog-0.0.0*
- Initial version.
==============================================================================
vim:tw=78:ts=8:ft=help:norl:fen:fdl=0:fdm=marker: