VI 常用编辑方法

常识

  • 空白符包括空格和制表符
  • VI 分多种模式
    1. 命令模式/默认模式 (ESC, ctr + [) , 移动,跳转,执行命令 (normal)
    2. 输入模式 (i, I, a, A, o, O, s, S, R) 输入, 编辑
    3. 末行模式 (:, /, ?) 保存, 退出, 查找, 替换等
    4. 可视模式 (v, V, ctrl + v), 选择, 行选, 块选
  • 常用键
    • w 单词, 不包括标点 (w, cw, dw, vw, yw)
    • b 单词开始, 不包括标点 (b, cb, db, vb, yb)
    • e 单词结尾, 不包括标点 (e, ce, de, ve, ye)
    • W 单词, 空白符分割 (W, cW, dW, vW, yW)
    • B 单词开始, 空白符分割 (B, cB, dB, vB, yB)
    • E 单词结尾, 空白符分割 (E, cE, dE, vE, yE)
    • ^ 软行首, 不包括空白符 (0, c0, d0, v0, y0)
    • 0 硬行首, 包括空白符 (0, c0, d0, v0, y0)
    • $ 行结尾 ($, c$, d$, v$, y$)
  • 操作
    • c 剪切 (cut 进入输入模式)
    • d 删除 (delete 保持命令模式)
    • v 选择 (viscidity)
    • y 复制
  • 范围
    • i 里面 (in)
    • a 所有 (all), 包括成对的括号, 空格等
  • 对象
    • w 单词 (word)
    • s 句子 (sentence句子)
    • p 段落 (paragraph)
    • ', ", ), ], }, > 成对标点符号
    • t 标签 (tag)
  • 操作 + 范围 + 对象
    • da) 删除小括号及小括号中的内容
    • ci} 删除大括号中的内容, 并进入输入模式
    • vip 选择当前段落
    • 等几十重组合

移动

  • h 左 (右手食指左移)
  • j 下 (右手食指)
  • k 上 (右手中指)
  • l 右 (右手无名指)
  • w 下个单词 (word)
  • b 前一个单词 (before)
  • e 下一单词结尾 (end)
  • W 下个单词, 包括标点 (word)
  • B 前一个单词, 包括标点 (before)
  • E 下一单词结尾, 包括标点 (end)
  • 0 行首
  • ^ 行首 不包括空白符(正则表达式:字串开始)
  • $ 行尾 (正则表达式:字串结尾)
  • - 前一行行首
  • + 后一行行首
  • gg 首行
  • G 尾行
  • #G 指定行
  • ctrl + f 下翻一页
  • ctrl + b 上翻一页
  • ctrl + d 下翻半页
  • ctrl + u 上翻半页
  • ( 句首
  • ) 句尾
  • { 段首
  • } 段尾
  • H 屏幕第一行
  • M 屏幕中间行
  • L 屏幕最后行
  • % 跳转到相配对的括号
  • gd 跳转到本地定义位置 (Goto local Declaration)
  • gD 跳转到全局定义位置 (Goto global Declaration)
  • ctrl + o 返回旧光标位置 (Older)

插入 (转换成输入模式)

  • i 光标前插入
  • I 行首插入
  • a 光标后插入
  • A 行末插入
  • o 后分段
  • O 前分段

选择 (ESC取消选择)

  • v 选择
  • V 行选择
  • ctrl + v 块选择
  • vw vW 选择一个单词
  • vb vB 选择到单词开始
  • ve vE 选择到单词末尾
  • v^ v0 选择到行首
  • v$ 选择到行尾

删除 (cut进入输入模式, delete保持命令模式)

  • cw dw 删除一个单词
  • cW dW 删除一个单词, 空格分割
  • cb db 删除到单词开始
  • cB dB 删除到单词开始, 空格分割
  • ce de 删除到单词末尾
  • cE dE 删除到单词末尾, 空格分割
  • c^ d^ c0 d0 删除到行首
  • c$ d$ 删除到行尾
  • dd 删除当前行
  • dD 删除到行尾
  • x 删除当前字符, 删除选择文字
  • X 删除前一个字符, 退格
  • J 删除行末换行
  • s 删除并转换输入模式
  • S 删除行并转换输入模式

修改

  • u 撤销上次操作 (undo)
  • U 撤销当前行所有操作 事情闹大了,得有个更大的UNDO才行
  • ctrl + r 回复撤销前 (recover)
  • r 替换当前字符
  • R 替换当前字符直到ESC为止
  • . 重复命令
  • ` 大小写转换
  • >> 缩进
  • << 反缩进

复制/粘帖

  • y 复制
  • Y 复制行
  • yw yW 复制当前单词
  • yb yB 复制到单词开始
  • ye yE 复制到单词结尾
  • y^ 复制到行首
  • y$ 复制到行尾
  • yy 复制当前行
  • p 粘贴到光标后
  • P 粘贴到光标前

查找/替换

  • /word 向下查找
  • ?word 向上查找
  • n 向下匹配
  • N 向上匹配
  • :s/1/2 搜索当前行 1 替换成 2 (search)
  • :s/1/2/g 搜索当前行 1 全部替换成 2 (global)
  • :%s/1/2/g 搜索全文档 1 全部替换成 2
  • :s/1/2/c 搜索全文档 1 替换成 2 需要询问 (cue)
  • R 替换模式

文件操作

  • :q 退出 (quit)
  • :w 存盘 (write)
  • :e 编辑 (edit) ,没有输入文件名则加载当前文件
  • :r 读取 (read) ,读取文件到当前文件中
  • :! 强行操作,退出,存盘,编辑等
  • :x 保存并退出
  • zz 保存并退出

其他

  • K 查找帮助
  • q 录制宏
  • @ 执行宏
  • . 重复上个命令
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它。但是,vim作为一...
    梁世勇阅读 1,621评论 2 12
  • 待整理~ 1、vim ~/.vimrc 进入配置文件 如果不知道vimrc文件在哪,可使用 :scriptname...
    spfanlost阅读 1,776评论 0 0
  • 光标移动 h 光标左移,同 <Left> 键j ...
    guanguans阅读 1,904评论 0 16
  • a #当前字符后添加A #行尾添加文本o #光标下方开始一个新行O #光标上方开始一个新行ZZ #保存并退出zz ...
    helphi阅读 695评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,500评论 0 5