vi学习笔记

1 工作模式

vi有两种工作模式

  • 命令模式(按ESC进入),这也是vi的默认工作模式
  • 插入模式(按i进入)

在命令模式下可以有三类操作:

  • 搜索操作,输入(/或者?)
  • 常规操作,输入:

命令执行之后过后会被放入缓冲区,可通过.重复上次命令

vi命令的常规形式
(command)(number)(text object)
在没有command时,就是光标移动命令
快捷键命令除外如cc dd

2 文件操作命令

  • 打开/创建文件 vi FILE
  • 保存 :w
  • 另存为 :w path/filename
  • 退出 :q
  • 强制退出 :q!
  • 保存并退出 :wq或者ZZ
  • 运行命令 :!命令,如查看磁盘剩余空间:!df -h
  • 挂起当前任务并切换至后台运行 CTRL+Z
  • 唤醒挂起的后台任务 fg,如果当前有多个后台任务,可使用fg %job号,job号可通过命令jobs查看,如:
root$ jobs
root$ vi ddd
[1]+  Stopped                 vi ddd
root$ jobs
[1]+  Stopped                 vi ddd
root$ fg %1

3 光标移动命令

光标普通移动

  • 移动到目标行nG,如移动到到第2行2G
  • 移动到首行1G
  • 移动到末行G
  • 到行首 0
  • 到行尾 $
  • 以空格为分割,左移B
  • 以空格为分割,右移W
  • 以word为单位,左移 b ,左移N个词则是Nb,如2b
  • 以word为单位,右移 w,右移N个词则是Nw,如2w
    -以word为单位,右移至词尾e
  • 左下上右hjkl,同样可以一次移动多个单位 ,如向下移动2行2j

按屏移动

  • 前进一屏CTRL+F
  • 后退一屏CTRL+B
  • 前进半屏CTRL+D
  • 后退半屏CTRL+U

以光标为中心换屏

  • 光标所在行至屏首z+Enter
  • 光标所在行至屏中z+.
  • 光标所在行至屏底z+-

屏内移动光标

  • 光标移至屏内首行 H
  • 光标移至屏内中央 M
  • 光标移至屏内尾行 L
  • 光标移至屏内首行起第n行 nH

4 编辑命令

4.1 替换

替换光标所在行 cc
替换光标所在行 S
从光标至行首c0
从光标至行尾 c$或者C

从光标至左侧两个词 c2b
从光标至词首 cb
从光标至词尾 cw

替换单个字母 r,键入一个新字母后vi自动进入命令模式,无需键入ESC
替换单个字母 R,可键入多个新字母
替换单个字母 s,可键入多个新字母
改变大小写~

替换之后,可在光标位置输入新内容,若无内容输入,需键入ESC退出替换模式

4.2 删除

删除光标所在行 dd,删除两行2dd
从光标至行首d0
从光标至行尾 d$或者D

从光标至词尾 dw
从光标至词首 db
从光标至左侧两个词 d2b

删除光标后的一个字符x,删除3个字符3x
删除光标前的一个字符X
删除后的数据会被放入缓冲区,可以用来粘贴至其他位置

4.3 回退

回退到上一步u,回退3步3u

4.3 粘贴

在光标后粘贴缓冲区的内容p
在光标前粘贴缓冲区的内容P
交换两个字符的位置xp

4.4 常用进入插入模式的命令

在行尾插入A
在行首插入I
在光标所在行下方插入空行并移动光标至新行o,进入插入模式
在光标所在行上方插入空行并移动光标至新行O,进入插入模式
删除单个字符并进入插入模式s
删除一行并进入插入模式S
进入覆盖模式,旧字符将被新字符覆盖R

插入时的重复

插入10个* 10i*ESC
插入10组*_ 10i*_ESC

4.5 复制

复制光标所在行 yy,复制两行2yy
从光标至左侧两个词 y2b
从光标至行首y0
从光标至词尾 yw
从光标至词尾 yb
从光标至行尾 y$或者Y
复制后的数据会被放入缓冲区,可以用来粘贴至其他位置

4.6 合并行

合并光标下的行至当前行J

4.7 查找

/PATTERN 正向查找PATTERN
?PATTERN反向查找PATTERN
n同继续查找
N反向查找

fx行内查找x
; 同方向继续行内查找
, 反方向继续行内查找

5 格式命令

  • 展示行号:set nu

你可能感兴趣的:(vi学习笔记)