vim编辑器详解

1. vim编辑器的基本使用

1.1 几种基本模式

  • 编辑模式、命令模式
  • 输入模式
  • 末行模式:内置的命令行接口

1.2 打开文件

  • 基本格式
    • vim  [OPTION] ...  FILE ...
  • 定位&匹配  
    • vim  FILE  +#   
      • 打开文件后,直接让光标处于第#行的行首
    • vim  FILE  +/PATTERN   
      • 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

1.3 模式转换

1)编辑模式 ——> 输入模式

  • i:insert, 在光标所在处输入
  • I:在当前光标所在行的行首输入
  • a:append, 在光标所在处后面输入
  • A:在当前光标所在行的行尾输入
  • o:在当前光标所在行的下方打开一个新行
  • O:在当前光标所在行的上方打开一个新行

2)输入模式 ——> 编辑模式

  • 按ESC

3)编辑模式 ——> 末行模式

4)末行模式 ——> 编辑模式

  • 按ESC

1.4 关闭文件

  • :q  退出
  • :q!  强制退出,丢弃做出的修改
  • :wq  保存退出
  • :x  保存退出
  • :w /PATH/TO/SOMEWHERE
  • ZZ  保存退出

2. 光标跳转

2.1 字符间跳转

  • h, j, k, l
    • h: 左
    • l: 右
    • j: 下
    • k: 上
  • #COMMAND:跳转由#指定的个数的字符

2.2 单词间跳转

  • w:下一个单词的词首
  • e:当前或下一单词的词尾
  • b:当前或前一个单词的词首
  • #COMMAND:由#指定一次跳转的单词数

2.3 行首行尾间跳转

  • ^: 跳转至行首的第一个非空白字符
  • 0: 跳转至行首
  • $: 跳转至行尾

2.4 移动

1)行间移动

  • #G:跳转至由#指定行
  • G:最后一行
  • 1G, gg:第一行

2)句间移动

  • )
  • (

3)段落间移动

  • }
  • {

3. vim的编辑命令

3.1 基本编辑操作

1)字符编辑

  • x:删除光标处的字符
  • #x:删除光标处起始的#个字符
  • xp:交换光标所在处的字符及其后面字符的位置

2)替换命令(r, replace)

  • r:替换光标所在处的字符

3)删除命令

  • d:删除命令,可结合光标跳转字符,实现范围删除
  • d$:
  • d^:
  • d0:
  • dw
  • de
  • db
  • #COMMAND
  • dd: 删除光标所在的行
  • #dd:多行删除

4)粘贴命令(p, put, paste)

  • p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
  • P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

5)复制命令(y, yank)

  • y: 复制,工作行为相似于d命令
  • y$
  • y0
  • y^
  • ye
  • yw
  • yb
  • #COMMAND
  • yy:复制行
  • #yy: 复制多行;

6)改变命令(c, change)

  • 编辑模式 --> 输入模式
  • c: 修改
  • c$
  • c^
  • c0
  • cb
  • ce
  • cw
  • #COMMAND
  • cc:删除并输入新内容
  • #cc:

3.2 其它编辑操作

1)可视化模式

  • v: 按字符选定
  • V:按行行定
  • 说明:经常结合编辑命令 d, c, y 一起使用

2)撤消此前的编辑

  • u(undo):撤消此前的操作
  • #u:撤消指定次数的操作

3)撤消此前的撤消

  • Ctrl+r

4)重复前一个编辑操作

  • 使用点号 .

3.3 翻屏操作

  • Ctrl+f:向文件尾部翻一屏
  • Ctrl+b:向文件首部翻一屏
  • Ctrl+d:向文件尾部翻半屏
  • Ctrl+u:向文件首部翻半屏

4. vim中的末行模式

  • 内建的命令行接口

4.1 地址定界

  • 语法:
    • :start_pos, end_pos
  • 规则:
    • #  具体第#行,例如2表示第2行
    • #, #  从左侧#表示行起始位置,到右侧#表示行结尾
    • #, +# 从左侧#表示的行起始,加上右侧#表示的行数
    • .  表示当前行
    • $  表示最后一行
    • %  表示全文,相当于1,$
    • /pat1/, /pat2/   从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
  • 使用方式:(后跟一个编辑命令)
    • d 删除
    • y 复制
    • w  /path/to/somewhere  将范围内的行另存至指定文件中
    • r  /path/to/somewhere  在指定位置插入指定文件中的所有内容

4.2 查找&替换

1)查找

  • /PATTERN:从当前光标所在处向文件尾部查找
  • ?PATTERN:从当前光标所在处向文件首部查找
    • n:与命令同方向
    • N:与命令反方向

2)查找并替换

  • 语法:(s:在末行模式下完成查找替换操作)
    • s/要查找的内容/替换成的内容/修饰符
  • 规则:
    • 要查找的内容:可以使用模式
    • 替换成的内容:不能使用模式,但可以使用 1, 2 ... 等后向引用符号,还可以使用“&”引用前面查找时查找到的整个内容
    • 修饰符:
      • i  忽略大小写
      • g  全局替换;默认情况下,每一行只能替换第一次出现,使用g选项则为全部替换
  • 说明:
    • 查找替换中的分隔符 / 可以替换为其他字符,如 @、#

4.3 多文件模式

  • 语法:
    • vim FILE1 FILE2 FILE3 ...
  • 操作:
    • :next 下一个
    • :prev 前一个
    • :first 第一个
    • :last 最后一个
    • :wall 保存所有
    • :qall 退出所有

4.4 窗口分隔模式

1)多文件窗口分隔

  • vim  -o | -O    FILE1    FILE2 ...
    • -o: 水平分割
    • -O: 垂直分割
  • 在窗口间切换:
    • Ctrl+w, Arrow

2)单文件窗口分割

  • Ctrl+w,s:split,水平分割
  • Ctrl+w,v:vertical,垂直分割

5. 定制vim的工作特性

5.1 配置文件

  • 全局配置文件:/etc/vimrc
  • 局部配置文件:~/.vimrc

5.2 配置项

  • 行号
    • 显示:set number, 简写为set nu
    • 取消显示:set nonumber, 简写为set nonu
  • 括号匹配
    • 匹配:set showmatch, 简写为set sm
    • 取消:set nosm
  • 自动缩进
    • 启用:set ai
    • 禁用:set noai
  • 高亮搜索
    • 启用:set hlsearch
    • 禁用:set nohlsearch
  • 语法高亮
    • 启用:syntax on
    • 禁用:syntax off
  • 忽略字符的大小写
    • 启用:set ic
    • 不忽略:set noic
  • 设置Tab缩进的空格数
    • set  tabstop=4
  • 设置编辑器将多少个空格视为一个缩进
    • set  shiftwidth=4

6. 一些使用技巧

6.1 多行编辑

1)多行添加(添加注释)

  • Ctrl+v 进入可视化模式
  • 然后选中想要多行编辑的位置范围
  • 键入大写的 I ,进入插入模式,再键入想要插入的字符
  • 最后连按两次ESC,完成添加

2)多行删除

  • Ctrl+v 进入列选择模式,移到光标把注释符选中,按下d,注释就被删除了

原文地址:https://www.cnblogs.com/hgzero/p/13665892.html