Questions tagged «cursor-motions»

移动光标的命令。在操作员命令之后使用运动命令来移动要操作的文本。

1
python块运动结束
我需要一个移动到python块结束/开始的动作,并且我需要另一个移动到上一个/下一个方法/类(所有组合)的开始/结束的动作。 我已经尝试过vim-indent-object,python-mode,chapa,vim-python-object等。它们都不支持块结尾,也都不支持上述动作的所有组合。 我记得曾几何时我有一个插件提供]],[[,][和[]运动的begining一个/下一个方法/班/结束,但在我插上目录我找不到它(搜索“] [”和“[]”在我插入的目录中并分析了所有出现的情况,但未找到定义“] [”或“ []”的任何内容)。 您知道我以前使用的插件吗?您知道提供此功能的任何插件吗?

3
动作映射
我试图了解如何在映射内的后续运动中使用运算符。例如: nmap /c c{here we pending for a motion}/<C-r>"<CR> 该地图应执行以下操作: 激活c操作员并收听下一个动作; 例如,我可以在此处键入t,以在下一个逗号之前更改所有内容; 进入插入模式,删除光标和逗号之间的所有内容; 删除的文本会自动搜索为图案 简而言之,删除运动文本后,我将处于插入模式,突出显示了已删除的文本。如果有人帮助我解决这个问题,我将不胜感激。 更新 答案几乎是我想要的。但!当我按时/cw,键入一些东西而不是单词,然后按<Esc>。我希望以后再做同样的事情。但是,在n(转到下一个出现)和.(重复上一个命令)之后,它只是在最后键入的文本之前加上了替换而不是替换它。映射的主要目标是将其与n/N和.重复使用。我错过了什么吗?

3
如何使用标记跳到我最近打开但未更改的文件中的位置?
通常,我编辑文件-认为我的工作已经完成-然后关闭文件并继续进行下一步。但是后来我意识到我需要回到该代码并对其进行更多调整。 如果再次打开文件,则可以使用.标记并使用跳到上一次编辑的位置'.。 现在,我正在尝试找到一种方法,使用vim的标记跳转到我最近访问但未更改的文件中的位置。 我知道我可以手动设置标记,但是在大多数情况下,我不希望再回来,因此我不设置标记,而需要使用vim自动生成的标记。 该"标记看起来这可能是一种方式来实现这一目标,从:h motion。 " 最后一次退出当前缓冲区时的光标位置。默认为第一行的第一个字符。参见| last-position-jump | 有关如何对每个打开的文件使用此功能。每个缓冲区只记住一个位置,而不是每个窗口记住一个位置。只要缓冲区在窗口中可见,位置就不会改变。{Vi无此功能}。 但是如果我 关闭所有显示缓冲区的窗口(但该缓冲区仍存在于缓冲区列表中)。要么: 杀死缓冲区的所有实例 标记似乎没有更新,如何使用标记跳转到缓冲区/文件中最后一个光标位置的位置?


2
矩形区域作为文本对象?
是否可以在vim中定义将作用于矩形区域的文本对象? 例如,假设我具有垂直对齐的文本列,如下所示: column 1 co column 2 col lumn 1 colu umn 2 column mn 1 column 2 column 2 c 1 column 1 olumn 2 colu 是否有可能定义一个textobject c为列,这样dac会删除列,yac将对其进行粘贴,cac要改变它,等等? (我知道控制-V选择一个矩形区域,我知道,你可以用d,y等删除,抽出等选定的区域。但我特别好奇,什么是可能使用文本对象。)

3
是否有类似“不包含前导空白”的动作?
我a"经常在vim中使用该动作。例如,ca"在重构代码时使用,用变量名替换硬编码的参数。这种方法的问题是,a" 如果没有尾随空白,则包括前导空白: 包括任何结尾的空格,除非没有空格,否则包括前导空格。 因此,当我编辑这样的函数调用时: aFunction(arg1, "toBeReplaced", arg3) #original aFunction(arg1, replacedArg, arg3) #refactored 我必须先手动重新插入该空间,然后再将replacedArg其ca"删除。 是否有任何类似的动作不包含此空白,或者还有其他我可以使用的替代方式,ca"使我不必键入多余的空格? 笔记: cf"只要字符串不包含任何转义引号,它就可以执行我想要的操作,但是需要我将光标放在字符串的开头。我想要可以在字符串中的任何地方使用的东西,而且?"<Enter>cf"键入起来很尴尬。 <Space>与其说是一次击键,不如说是我经常起初常常忘记包含空格,这使我花费了至少四次额外的击键(bi<Space><Esc>)并破坏了我的注意力。因此,替换命令的长度并不重要,只要它仅删除给定字符之间的文本然后进入插入模式即可。

4
将操作限制为一段代码
在我的日常工作中,有很多次我需要操作特定的功能,例如突出显示或搜索变量,但是我从未设法限制编辑/搜索的范围。 vim中是否有一种方法可以有选择地说,找到$color这些括号内的所有引用,或这种折叠等。如果可能的话,最好是相对通用的,以便可以将其应用于编辑/替换文本。 举个例子: $color = "#fff"; function PickColor () { $color = "#bbb"; $newColors = ["#000", "#fbf", $color]; foreach ($newColors as $c) { if ($c == "#fff") { break; } } } $differentColor = $color; 这段代码是一个相对较差的示例,但是,如果我需要替换$ color的所有实例,那么如何在函数PickColor的上下文中执行此操作。再举一个例子,使用#和*你可以去反对整个文件文本对象的下一个实例,你会如何限制了搜索只是这个功能(基本包搜索),其范围可以跨越成千上万行和输球您的位置,还是错误地替换了您不应该使用的其他功能?

1
在操作员待定模式下更改光标形状
我在Gvim中的光标: 按下后,我在Gvim中的光标d: 在操作员挂起模式下,有什么方法可以在终端Vim中更改光标?它不必看起来完全像截图一样。 这是由Gvim 的o:hor50-Cursorin 完成的guicursor。我为Vim看到的唯一三个选项是: t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* |termcap-cursor-shape| 但是关于操作员挂起模式的一切...

2
理解“ [[”,“]]”,“ []”,“] [”
我发现很难理解这些文本对象的动作: *]]* ]] [count] sections forward or to the next '{' in the first column. When used after an operator, then also stops below a '}' in the first column. |exclusive| Note that |exclusive-linewise| often applies. *][* ][ [count] sections forward or to the next '}' in the first column. …

1
如何轻松获得一段文本的长度?
有时我想检查一段文本的长度,例如在此示例中: str = 'Hello, world!' if len(str) == 13: print('Hello back to you!') 我想知道字符串的长度Hello, world!。 我现在做的,就是在列号rulerformat用%c,我把我的光标上的第一个字符,然后去到最后,和手动。减去。 但是,这很尴尬。例如,我想要的是在标尺中以虚拟模式进行选择的时间长度,但是据我所知,对此没有任何选择。 能做到吗?还是以其他更简单的方式?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.