An example HTML, with the cursor where the brackets are:<foo>  <bar>          baz          quux          []  </bar></foo>I would like to outdent the text inside <bar/>. Naturally, I try <it, but it turns out that it is everything inside <bar/> - including the newline after <bar>, and indent before </bar>. Thus, < pulls the entire <bar/> tag, not just the contents.On the other hand, <i{ does the right thing in pretty much the same circumstance:if (foo) {    baz();    quux();    []}Does anyone have an idea how I can select just the three lines between, without the <bar> and </bar> lines, just like I can do inside the braces? The best I can come up with is vitkoj<; am I missing something obvious?
Linewise inner tag without the tag lines?
cursor motions;filetype html;filetype xml
You can use Operator-pending mode to define new text objects by havingthe mapping invoke Visual mode, and then select the text you want tooperate on.I'm not entirely sure what semantics you want here; the devil is in thedetails, as usual. But you could try the following::onoremap iT :<C-U>normal! vitbowV<CR>And then <iT to unindent something.To define the text to operate on it does vit to select the inner tag,backs up a word, moves to the beginning of the selection, then moves ona word, and then makes the selection linewise. This should suffice for most situations.More details at :help omap-info.