Am 04.01.2012 19:52, schrieb Christian Brabandt:
Hi Bram,
I noticed a strange behaviour today when using the d command.
I was deleting several lines with a motion that selected the last non
blank on a line. Surprisingly, this deleted the whole line. After
searching the help, I found it explained by this paragraph in the help:
An exception for the d{motion} command: If the motion is not
linewise, the start and end of the motion are not in the same line,
and there are only blanks before the start and after the end of the
motion, the delete becomes linewise. This means that the delete
also removes the line of blanks that you might expect to remain.
So I tried the suggestion, made at :h o_v
When used after an operator, before the motion command: Force
the operator to work characterwise, also when the motion is
linewise. If the motion was linewise, it will become
|exclusive|.
If the motion already was characterwise, toggle
inclusive/exclusive. This can be used to make an exclusive
motion inclusive and an inclusive motion exclusive.
But surprisingly did not work. So I propose the following fix:
diff --git a/src/ops.c b/src/ops.c
--- a/src/ops.c
+++ b/src/ops.c
@@ -1648,6 +1648,7 @@
&& !oap->block_mode
#endif
&& oap->line_count> 1
+&& !oap->motion_force
&& oap->op_type == OP_DELETE)
{
ptr = ml_get(oap->end.lnum) + oap->end.col;
regards,
Christian
What do you mean? Example text:
abc
def
ghi
jkl
With cursor on "def", typing
d2e
results in
abc
jkl
and typing
dv2e
results in
abc
i
jkl
According to the docs, it "works" for me, I think.
Would just be more useful if dv2e was handled inclusive (and not exclusive).
--
Andy
--
You received this message from the "vim_dev" 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