Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 说明
  • Vim

  • VSCode

  • Chrome

  • iTerm

  • mac

  • Obsidian

  • lazygit

  • 学习双拼
  • Vim 技巧

    • Vim 技巧 - 说明
    • Vim 技巧 - 以退为进
    • Vim 技巧 - 点范式
    • Vim 技巧 - 把撤销单元切成块
    • Vim 技巧 - 构造可重复的修改
    • Vim 技巧 - 用次数做简单的算术运算
    • Vim 技巧 - 能够重复,就别用次数
    • Vim 技巧 - 在插入模式中可即时更正错误
    • Vim 技巧 - 结识插入 - 普通模式
    • Vim 技巧 - 不离开插入模式,粘贴寄存器中的文本
    • Vim 技巧 - 重复执行面向行的可视命令
    • Vim 技巧 - 只要可能,最好用操作符命令,而不是可视命令
    • Vim 技巧 - 结识 Vim 的命令行模式
    • Vim 技巧 - 在一行或多个连续行上执行命令
    • Vim 技巧 - 使用‘:t’和‘:m’命令复制和移动行
      • 用‘:t’命令复制行
      • 用‘:m’命令移动行
    • Vim 技巧 - 在指定范围上执行普通模式命令
    • Vim 技巧 - 重复上次的 Ex 命令
    • Vim 技巧 - 把当前单词插入到命令行
    • Vim 技巧 - 回溯历史命令
    • Vim 技巧 - 运行 Shell 命令
    • Vim 技巧 - 将工作区切分成窗
    • Vim 技巧 - 区分实际行与屏幕行
    • Vim 技巧 - 通过查找进行移动
    • Vim 技巧 - 遍历改变列表
    • Vim 技巧 - 用无名寄存器实现删除、复制与粘贴操作
    • Vim 技巧 - 深入理解 Vim 寄存器
    • Vim 技巧 - 用寄存器中的内容替换高亮选区的文本
    • Vim 技巧 - 把寄存器的内容粘贴出来
    • Vim 技巧 - 宏的读取与执行
    • Vim 技巧 - 规范光标位置、直达目标以及中止宏
    • Vim 技巧 - 加次数回放宏
    • Vim 技巧 - 在连续的文本行上重复修改
    • Vim 技巧 - 给宏追加命令
    • Vim 技巧 - 编辑宏的内容
    • Vim 技巧 - 调整查找模式的大小写敏感性
    • Vim 技巧 - 查找使用 v 或 V 模式
    • Vim 技巧 - 界定单词的边界
    • Vim 技巧 - 转义问题字符
    • Vim 技巧 - 结识查找命令
    • Vim 技巧 - 在执行查找前预览第一处匹配
    • Vim 技巧 - 将光标偏移到查找匹配的结尾
    • Vim 技巧 - 利用查找历史,迭代完成复杂的模式
    • Vim 技巧 - 结识 substitute 命令
    • Vim 技巧 - 在文件范围内查找并替换每一处匹配
    • Vim 技巧 - 手动控制每一次替换操作
    • Vim 技巧 - 重用上次的查找模式
    • Vim 技巧 - 用寄存器的内容替换
    • Vim 技巧 - 重复上一次 substitute 命令
    • Vim 技巧 - 使用子匹配重排 CSV 文件的字段
    • Vim 技巧 - 自动补全整行文本
    • Vim 技巧 - 以 g 开头的命令
    • Vim 技巧 - 以 z 开头的命令
    • Vim 技巧-ctrl 命令
    • Vim 技巧
    • 每日一 Vim 笔记
  • 键盘侠
  • Vim 技巧
Henry
2022-09-06
目录

Vim 技巧 - 使用‘:t’和‘:m’命令复制和移动行

:copy 命令(及其简写形式 :t)让我们可以把一行或多行文本从文档的一个位置复制到另一个位置,而 :move 命令则可以让我们把一行或多行文本移到文档的其他地方 (目前 VSCodeVim 暂不支持 move)。

我们将使用如下购物清单作为演示:

# 用‘:t’命令复制行

这个购物清单还没完成,我们也要在五金商店(hardware store)买些钉子(nails)。为完成这个清单,我们将重用文件的最后一行,即在“Hardware Store”下面为之创建一份副本。我们可以用 Ex 命令 :copy 轻松地完成这项工作:

copy 命令的格式如下(参见:h :copy):

:[range]copy{address}

在此例中,[range] 是第 6 行,而 {address} 用的是符号 .,它代表当前行。因此,我们可以把 :6copy. 命令解读为“为第 6 行创建一份副本,并放到当前行下方”。

:copy 命令可以简写为两个字母 :co,或者也可以用更加简练的 :t 命令,它是 :copy 命令的同义词。

为了更好地记忆,你可以把该命令想成“复制到(copy TO)”。下表展示了:t 命令的一些应用实例:

:t. 命令会创建一个当前行副本,而另外一种做法则是用普通模式的复制和粘贴命令(yyp)来达到同样的效果。这两种复制当前行的技术有个需要关注的差别:yyp 会使用寄存器,而 :t. 则不会。因此,当我不想覆盖默认寄存器中的当前内容时,有时我会使用 :t. 来复制行。

在上表中,也可以将 yyp 变化一下来复制我们想要的行,但不管怎样,这都需要一些额外的移动动作。我们得先跳到想复制的行上(6G),复制该行(yy),快速跳回原先的位置(<C-o>),然后再用粘贴命令(p)创建一个副本。由此可见,在复制距离较远的行时,:t 命令通常更加高效。

在 Ex 命令影响范围广且距离远中,我们已经了解了这个一般规律,即普通模式命令适合在当前屏幕可见范围内进行操作,而 Ex 命令则可以远距离操作。本节则以实例印证了这一规律。

# 用‘:m’命令移动行

:move 命令看上去和:copy 命令很相似(参见:h :move):

:[range]move{address}

我们可以把它简写为一个字母:m。假设我们想把 Hardware Store 一节移到 BeautyParlor 一节的下方,用 :move 就可以实现这一点

在选中高亮选区后,只需简单地执行命令 :'<,'>m$ 即可。另外还有种做法,我们也可以执行 dGp,此命令可以分解为:d 删除高亮选区,G 跳转到文件结尾,而 p 则粘贴刚刚删除的文本。

记住,'<,'> 代表了高亮选区。因此我们可以很容易地选中另外一个高亮选区,然后重复执行 :'<,'>m$ 命令把选中的文本移到文件结尾。重复上次的 Ex 命令非常简单,只需按 @: 即可,所以这里所采取的方式与使用普通模式命令相比,在重复执行时会更方便。

编辑 (opens new window)
#Vim
上次更新: 5/27/2023, 1:02:05 PM
Vim 技巧 - 在一行或多个连续行上执行命令
Vim 技巧 - 在指定范围上执行普通模式命令

← Vim 技巧 - 在一行或多个连续行上执行命令 Vim 技巧 - 在指定范围上执行普通模式命令→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式