所以我键入
vip
以可视方式选择该段落:现在我按
cmd+C
复制到剪贴板(这可能在您的系统上有所不同,但与帖子的中心问题无关),这使我的光标停留在开头该段的内容:,而不是我开始时的期望位置。
请注意,当使用
yip
以非可视方式拉动选择。执行类似选择/复制操作后,我希望默认行为是“返回到原始光标位置”。是否有配置使之成为可能?
#1 楼
一种可能的解决方案是使用跳转:在拉动或视觉选择之前,您可以设置一个新的跳转,在光标移动后便可以访问该跳转。为此,请使用m`。
然后在由于拉动而使光标移动后,请使用ctrlo跳回跳转列表。另外,您还可以通过
:jumps
查看可用的跳转列表,并使用ctrlo和ctrli浏览该列表。要总结您的工作流程,将是:
m`
ip
由于使用m`设置了标记,您可以使用''而不是ctrlo跳转到它。
您可以阅读
:h mark-motions
和:h :jumps
了解更多信息。评论
我喜欢这个。有没有一种方法可以使单引号在跳动时表现得像反引号一般?单引号更容易键入,通常我想跳到正确的列位置以及右行...
–乔纳
16-3-3在23:28
@Jonah,我将
– Numeri说恢复莫妮卡
16 Mar 4 '16 at 1:28
@Jonah:正如Numeri所说,映射可以是一个很好的解决方案,否则,如果您想摆脱反引号,可以查看:h'langmap'。我并不是说这是理想的解决方案,但也许对您来说很有趣。
–statox♦
16 Mar 4 '16 at 8:35
@Johah,我实际上使用noremap'`noremap`'交换单引号和反勾...这在我的vimrc中,效果很好
– Niko Bellic
16-11-22在22:30
#2 楼
您可以使用以下方法避免移动光标::'{,'}y
请参阅
:help range
,:help mark-motions
和:help :y
。评论
很高兴知道,但这是您实际上在做什么?似乎敲击带有两个方括号的8个击键比标记解决方案更难
–乔纳
16 Mar 3 '16 at 23:24
如果我在你的位置,那就是我会做的。但是我对您描述的行为没有问题,所以我实际上没有这样做。
– romainl
16 Mar 4 '16 at 7:54
@Jonah您仍然可以选择创建映射。 :nmap
–statox♦
16 Mar 4 '16 at 8:31
#3 楼
我的光标位于段落的中间
如果您刚刚对其进行了编辑,则最简单的解决方案是键入g;这会将光标定位在最后一个编辑位置。
如果您尚未编辑该段落,则可以使用与您所在字符相同的字符(例如,在
h
上,键入rh
)执行简单的替换操作,以触发“事件”,而无需实际编辑任何内容。评论
+1:我一直使用'。,但是用g在最后更改之间导航非常有用;和g,
–mMontu
16-3-3在16:26
有g的版本吗?哪个也会将您带到正确的列位置?
–乔纳
16 Mar 3 '16 at 23:19
@Jonah就是默认行为。它对您有用吗?它总是将我带到正确的列和行位置。
– Al.G.
16 Mar 4 '16 at 8:20
#4 楼
vim-easyclip插件对此进行了设置:g:EasyClipPreserveCursorPositionAfterYank
-默认值为0(即禁用)。 Vim的默认行为是将光标定位在被选中文本的开头,这与其他动作是一致的。但是,如果您希望在执行yanks时光标位置保持不变,请启用此选项。为这个小功能安装整个插件有点麻烦,所以我更喜欢根据我的评论使用标记。
#5 楼
扩展Al.G.的答案,我们可以直接编辑所需的位置。解决方案是gi。我们将到达之前处于上一个插入模式的相同位置。您在本段的中间。
切换到插入模式。
切换到普通模式。
按vip。
按gi。
切换到普通模式。 (gi会让我们进入插入模式)
如果要开始或结束显示突出显示的文本。
:help v_o
当您拉动时突出显示的文本,您还将返回到正常模式,并且您可能会或可能不会保留原始光标位置。
如果从高到低光标位置开始突出显示(从
较低的行列编号到较高的行列编号),您将
按y保留原始光标位置
如果突出显示从较低的光标位置到较高的光标位置,光标将保持到当前位置。
摇动:gv后返回到原始位置以获取上一个突出显示。
现在,您可以使用keyo或O在可视模式下在原始位置和当前位置之间进行切换。
状态行的行号和列号将有助于了解准确的光标位置。
/>文档:
:help visual-change
评论
当光标从段落中间开始时,这不适用于VIP。
– Antony
16年8月31日在10:03
哦,我没有注意到,现在,我将编辑我的答案而不是删除它。
–武山
16年8月31日在10:57
@Antony现在它也适用于VIP检查我的编辑。
–武山
16 Sep 5'在10:56
评论
是的,我也觉得很烦。我只是倾向于为此目的使用标记:mm“ + yap`m(请注意,” + y会拖到系统剪贴板中)我发现将光标放置在被拖动区域的开始或结尾处很有用。毕竟,我现在该如何处理带有被拉扯的文本和其中的光标?现在进行放置/粘贴没有多大意义。但是,如果我想稍后再做,则意味着我也可以稍后再整理...也许您现在需要的只是一个标记。