line - 我想在 Vim 中只移动一行
问题描述
yy 和 p 应该复制并粘贴 1 行文本。但我必须回去删除原来的行。
:2,5m10 应该将行从 2 移动到 5 到第 10 行。但是我需要启用 :set number 以查看我要移动的行
我只想移动 1 行文本,有点像 yy+p 而不是使用 :2,3m10 来移动一行。
有没有类似 mm+p 的东西?所以它将当前行复制到缓冲区并删除该行,然后将其粘贴到您想要的位置?
:3米。将第 3 行移动到当前行。
上面的行是我想要的功能。我可以设置一个键映射,以便“mm”替换“:3m”。? 我觉得打字更容易。TIA
解决方案
您所描述的是使用时的默认行为dd
-it 在缓冲区中删除一行p
并将其粘贴。
所以dd
并且p
有效。
y
如果你是 vim 的新手,那么 'yanking' (with ) 和 'deleting' (with d
) 都复制到缓冲区似乎有点奇怪
,因为它的 'cut'、'copy' 和 'paste' 行为大多数其他编辑。
您可以阅读更多关于它的信息:help change.txt
,尤其是:help registers
.
另外,既然你说你需要启用:set number
,我想知道你是否遇到过:set relativenumber
?这非常有用 - 在下面的示例中,如果您的光标位于带有 'demonstrate' 的行上,则数字看起来是这样的:
3 This is just
2 a small
1 example to
0 demonstrate
1 how relative
2 numbers can
3 be useful
因此,如果您想将行 'a small' 移动到带有 'numbers can' 的行下方,您可以使用相对行号来知道这2k
会将光标放在您想要的行上,您将点击dd
,然后您d 有这种情况(删除的行现在在缓冲区中:
1 This is just
0 example to
1 demonstrate
2 how relative
3 numbers can
4 be useful
然后你可以3j
移动到'numbers can'行,然后点击p
。因此,相对数字是快速移动到您可以看到的线条的好方法。此外,为了完整起见,您可以在命令行上以类似的方式使用相对数字:(:-2m+3
尽管我知道这不是您所追求的)。您甚至可以同时设置相对编号和设置编号,在这种情况下,就像上面的示例一样,只有您在当前行上显示绝对行号而不是零。
推荐阅读
- python - 满足条件时的分组时间差
- r - 如何使用 tidymodels 使用 knn 模型获得具有多个结果的预测?
- kubernetes - Kubernetes 多重 NetworkPolicy
- linq - .net 核心 3 中的 IQueryable.Union/Concat
- c# - 如何使用 Linq 按日期时间和平均结果对字典进行分组
- android - Lcom/google/android/gms/common/internal/Preconditions 类中没有静态方法 checkHandlerThread(Landroid/os/Handler;Ljava/lang/String;)V
- python - Numpy 给定两个具有值和置信度的数组,创建一个置信度最高的数组
- java - 来自其他 Spring PropertySource 的引用属性
- oracle - PLS-00201 – 必须声明标识符,将集合传递给过程
- python - 将python中的网格旋转为与向量平行