如何移动一个块或一列文本

Dav*_*.ca 28 vim

我有以下文字作为一个简单的案例:

...
abc xxx 123 456
wer xxx 345 678676
...
Run Code Online (Sandbox Code Playgroud)

我需要将一块文本xxx移动到另一个位置:

...
abc 123 xxx 456
wer 345 xxx 678676
...
Run Code Online (Sandbox Code Playgroud)

我想我使用可视模式来阻止一列文本,将块移动到另一个位置的其他命令是什么?

Pau*_*aul 45

你应该使用blockwise visual mode(Ctrl+ v).然后d删除块,pP粘贴块.


Kli*_*ger 16

试试这个链接.


标记文字(视觉模式)

  • v - 启动视觉模式,标记线条,然后执行命令(如y-yank)
  • V - 启动Linewise可视模式
  • o - 移动到标记区域的另一端
  • Ctrl+ v- 启动可视块模式
  • O - 移动到街区的其他角落
  • aw - 标记一个单词
  • ab - a()块(带括号)
  • aB - 一个{}块(带括号)
  • ib - inner()块
  • iB - 内部{}块
  • Esc - 退出视觉模式

可视命令

  • > - 向右转
  • < - 向左转
  • y - 猛拉(复制)标记文本
  • d - 删除标记文本
  • ~ - 开关盒

剪切和粘贴

  • yy - 猛拉(复制)一条线
  • 2yy - 猛拉2行
  • yw - 猛的话
  • y$ - 猛拉到终点
  • p - 在光标后放置(粘贴)剪贴板
  • P - 在光标前放(粘贴)
  • dd - 删除(剪切)一条线
  • dw - 删除(剪切)当​​前单词
  • x - 删除(剪切)当​​前字符


Kem*_*hou 10

在学习VIM之初我学到的几个有用的命令之一是:1,3 mo 5这意味着将文本行1到3移动到第5行.

  • 你可以在视觉模式中选择线条,然后按`:`来获得`:'<,'>`(相当于答案中的`:1,3`部分),并添加'mo N`.如果你想移动一行,只需`:mo N`.如果你真的很懒,你可以省略空格(例如`:mo5`).使用带有'mo'{a-zA-Z}`的标记. (2认同)

Joh*_*ood 6

  1. 在VIM中,按Ctrl+ V进入可视阻止模式
  2. 使用您的选择所需的列,arrow keys然后按下x以在缓冲区中剪切它们.
  3. 将光标移动到第1行第9列并P在命令模式下按(即大写字母P).
  4. Ctrl+ Shift+ b进入和退出.(来源)