在Vim中,当我们尝试粘贴最后一次猛拉时,我们按下p。那时,我希望将寄存器粘贴到光标所在的位置,而不是光标之后。
更确切地说,它的行为类似于'a',它是'i'的特殊版本。但是'p'是一个如此原始的命令,我希望它表现得像'我'而不是'a'。
At the cursor - After the cursor
i - a
P - p
奖金问题:为什么i+<esc>=h
?
答案 0 :(得分:5)
很难凭直觉争辩 - 每个人都有自己的: - )
p
行为的原因与a
相同:您需要一种方法在文本后粘贴。否则,就不可能在行的末尾执行此操作(忽略较新的Vim设置,例如'virtualedit'
,旧的 vi 中不存在),以及其他地方你必须在粘贴之前移动光标(笨重!)。
同样,光标在 Esc 之后向左移动,以便它始终位于有效字符上。有关详细信息和补救措施,请参阅this Vim Tips Wiki page。
答案 1 :(得分:5)
你很困惑:这些命令都没有工作&#34;在光标处&#34;因为,在正常模式下,光标始终 on 一个字符。粘贴&#34;在光标处#34;或进入插入模式&#34;在光标处#34;意味着应删除光标下的字符,这很少是我们想要的,iapP
的行为与此一致。
i
没有开始插入模式&#34;在光标处&#34;但是&#34;在光标之前#34;并且P
遵循相同的逻辑:在光标&#34;之前插入未命名寄存器的内容&#34;。
lore[m] ipsum
i
lore|m ipsum <-- before the cursor
a
在光标&#34;之后开始插入模式&#34;并且p
遵循相同的逻辑:在光标&#34;之后插入未命名寄存器的内容&#34;。
lore[m] ipsum
a
lorem| ipsum <-- after the cursor
然而,如果不能粘贴现有文本(v{motion}p
)或者在删除光标(s
)下的字符或各种类型的情况下开始插入模式,Vim会很糟糕疯狂的文字处理技巧。
为了充分利用Vim,您必须拥抱模态 - 更具体地说 - 习惯于在正常模式下光标的行为。
奖励回答:退出插入模式时,正常模式光标位置始终位于插入模式光标左侧的字符上。这是一种半随意的选择,那种有意义和相反的行为(把光标放在右边)不会让IMO更有意义。