打开Vim,只在缓冲区中插入以下文本行。
hello world
换句话说,按 i ,键入hello world
并按 Esc 。
按 0 将光标定位在第一行的第一个字符处。
o
。按 d e 。您会看到h
到o
中的字符已被删除。只留下以下文字。
world
打开Vim,只在缓冲区中插入以下文本行。
hello world
换句话说,按 i ,键入hello world
并按 Esc 。
按 0 将光标定位在第一行的第一个字符处。
w
。按 d w 。您会看到h
到中的字符已被删除。只留下以下文字。
world
但是,我希望删除从h
到w
的所有内容,并且只留下以下文字。
orld
首先让我引用下面的:help d
。
*d*
["x]d{motion} Delete text that {motion} moves over [into register
x]. See below for exceptions.
在实验1中, e 引起的动作从h
移到o
,确定从h
到o
的所有内容(包括h
和o
)已被删除。
在实验2中, w 引起的动作从h
移到w
但从h
到w
的所有内容(包括{ {1}}和h
)未被删除。为什么呢?
d w , d e 和 d <的行为kbd> b 总结如下。
w
为什么三个命令的行为不一致?
答案 0 :(得分:33)
de
会削减光标下的所有内容,包括世界的最后一个字符,e
是包含性动作。
dw
会切断光标下的所有内容,包括下一个单词,w
是独占动作。
您的问题的答案不在:help d
(de
且dw
与其完全一致),而在:help e
和:help w
({{ 1}}和e
不必同样工作,因为正如文档所说,一个是包含而另一个独占)。
请务必记住,Vim中的所有内容都与可组合性有关:w
不是de
,而是de
应用于d
。
答案 1 :(得分:19)
使用:h exclusive
:
A character motion is either inclusive or exclusive. When inclusive, the
start and end position of the motion are included in the operation. When
exclusive, the last character towards the end of the buffer is not
included.
您可以使用:h word-motions
检查哪些动作是包含的(如 e ),哪些是独占的(如 w )。对于使用动作只是为了移动光标它并不重要,但它在 operator-pendig 模式下使用它时会发生。
请注意,这绝不是特定于Vim的,这些语义是由原始Vi定义的。
答案 2 :(得分:9)
这是因为,动作w
为exclusive motion
,但e
为inclusive
。{/ p>
请参阅:
:h w
:h e
和
:h exclusive
答案 3 :(得分:0)
根据Vim文档,您可以在操作员切换字符动作的独占性质后使用import pandas as pd
import numpy as np
stops_data = pd.DataFrame({'hh_id': [20044,20044,20044,20044,20044,20044,20044,20044,20044,20044,20044,20122,20122,20122,20122,20122,20122,20122,20122,20122,20122,20122,20122,20122,],'tour_id':[16300,16300,16100,16100,16100,16100,16200,16200,16200,16000,16000,38100,38100,37900,37900,37900,38000,38000,38000,38000,38000,38000,37800,37800],'arrivaltime':[360,960,900,900,900,960,1080,1140,1140,420,840,300,960,780,720,960,1080,1080,1080,1080,1140,1140,480,900],'tour_duration':[600,600,60,60,60,60,60,60,60,420,420,660,660,240,240,240,60,60,60,60,60,60,420,420],'comp_expr':[1350,1350,268,268,268,268,406,406,406,974,974,1568,1568,606,606,606,298,298,298,298,298,298,840,840]})
stops_data['flag'] = np.where(stops_data.groupby(['hh_id'])
['tour_duration'].transform(max) < stops_data['comp_expr'],0,1)
:
如果动作已经按照角色进行,请切换 包含/排除。这可以用来做一个独家 包含运动和包含运动在内。
以上面的v
文本为例(hello world
表示光标位置):
|
|hello world
会将vw
的运动变为包容性,因此在w
之后,文本变为:
dvw
orld
会将ve
的运动变成排他的,因此在e
之后,文本变为:
dve