Please enable Javascript to view the contents

Linux经验-VIM-动作与操作符

 ·  ☕ 4 分钟

命令格式

命令的格式如下:
[number] operator [number] motion
说明:
operator - 操作符: 表示要做什么,例如 d 表示删除
[number] - 数字(可选): 表示重复后面的motion多少次
motion - 动作: 表示在文本上的移动动作。w (word)、e (end of word)、$ (end of the line)、0 (start of the line)等

注意:

  • operator 必须在 motion 前
  • [number]为可选参数,当两个都存在时,两者相乘。例如 d5l5dl 效果一样,删除5个字符; “2d3w” 删除2*3六个单词。
  • 重叠操作符会变成操作,例如 3dd 删除3行; 2y3y 抽出6行。

操作符 operator

动作命令出现在操作符之后,从而使操作符作用于被该动作所跨越的文本之上。也就
是,在动作之前和之后的光标位置之间的文本。一般的,操作符用来删除或者改变文本。
下面列出所有的操作符:

     c      c       修改 (change)
     d      d       删除 (delete)
     y      y       抽出 (yank) 到寄存器 (不改变文本)
     ~      ~       变换大小写 (只有当 'tildeop' 置位时有效)
     g~     g~      变换大小写
     >      >       右移
     <      <       左移
     zf     zf      定义折叠(zo展开)

修改 c

Change 会将[number]motion的内容全部删除,并进入Insert模式;

删除从光标到下一个字开头的中间内容, 并进入Insert模式 cw
删除一个单词: 删除从光标到当前字结尾的中间内容, 并进入Insert模式 ce
删除从光标到当前行结尾的中间内容, 并进入Insert模式 c$
删除光标所在整行内容,并进入Insert模式, 并进入Insert模式 cc
左删除5个字符, 并进入Insert模式 c5h 5ch
右删除5个字符, 并进入Insert模式 c5l 5cl
删除光标所在行及以下10行内容, 并进入Insert模式 c10j 10cj 10cc
删除光标所在行至文件末尾内容, 并进入Insert模式 cG
删除光标所在行至文件开头内容, 并进入Insert模式 cgg

c是operator,i表示内含(inside),i"是文本对象,在引号内。
删除光标所在’‘内的所有内容, 并进入Insert模式 ci'
删除光标所在"“内的所有内容, 并进入Insert模式 ci"
删除光标所在{}内的所有内容, 并进入Insert模式 ci{
删除光标所在[]内的所有内容, 并进入Insert模式 ci[
删除光标所在()内的所有内容, 并进入Insert模式 ci(

删除 d

Delete 会将[number]motion的内容全部删除,并保持在Normal模式;

删除光标所在的一个字符 dl 缩写 x
删除一个单词: 删除从光标到下一个字开头的中间内容 dw
删除一个单词: 删除从光标到当前字结尾的中间内容 de
删除从光标到当前行结尾的中间内容 d$
删除光标所在一整行内容 dd
左删除5个字符 d5h
右删除5个字符 d5l
删除光标所在行及以下10行内容 d10j 10dd
删除光标所在行至文件末尾内容 dG
删除光标所在行至文件开头内容 dgg

复制 y

yank(抽出 → 寄存器)

复制光标所在的一个字符 y

复制从光标到下一个字开头的中间内容 yw
复制从光标到当前字结尾的中间内容 ye
复制从光标到当前行结尾的中间内容 y$
复制光标所在一整行内容 yy
左复制5个字符 y5h 5yh
右复制5个字符 y5l 5yl
复制光标所在行及以下10行内容 y10j 10yj 10yy
复制光标所在行至文件末尾内容 yG
复制光标所在行至文件开头内容 ygg

custom复制:按 v进入Visual模式,再通过 hjkl 选择内容,再按 y 对内容进行复制,最后通过 p 在合适位置进行粘贴。

动作Motion

光标在文本上的移动行为

  • 基本:

使用方向键,或者用 “h” 向左,“j” 向下,“k” 向上,“l” 向右。

记忆点: h键 在最左边,← ; l键 在最右边,→; j键 像一支尖端朝下的箭头, ↓。
^
k
< h l >
j
v
移动到行尾 $ 或
移动到行首 0 或
移动到行首非空字符 ^
移动到下个单词首部 w
移动到当前单词末尾 e
移动到文件末尾 G
移动到文件开头 gg
向上移动n行 n-
向下移动n行 n+
移动到文件指定行(举例:第33行) 33G 或者 :33
移动到文件百分比处(举例:文件10%) 10%

  • 高级:配合Num

向下移动10行 10j 或 10+
向上移动10行 10k 或 10-
向左移动10个字符 10l
向右移动10个字符 10h
移动到右侧第10个单词首部 10w
移动到右侧第10个单词尾部 10e

分享

Hex
作者
Hex
CloudNative Developer

目录