vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
简单的说,我们可以将这三个模式想成底下的图标来表示:
一、一般模式
移动:
- 0/home 移动到当前行首
- $/end 移动到当前行尾
- G 移动到文件最后一行
- nG 移动到第n行,例如30G 即是移动到第30行
- gg 移动到文件的首行
- n[enter] 输入数字n,然后按enter,光标向下移动n行
查找:
- /word 向下寻找word,例如要查找log 输入/log即可
- ?word 向上寻找word
- n / 时向下,?时向上查找
- N 同n相反
- :n1,n2s/word1/word2/g 将n1到n2之间的word1替换为word2。例如:
- :100,200s/error/warn/g 将100到200行间把error替换为warn
- :1,$s/word1/word2/g 将第一行到最后一行的word1替换为word2
删除、复制、黏贴
- x,X x向后删除,X向前删除
- nx 向后删除n个字符,X同理
- dd 删除光标所在行
- ndd 删除光标所在行的向下n行
- d$ 删除从光标所在处到该行的最后一个字符
- d0 删除从光标所在处到该行的第一个字符
- yy 复制光标所在行
- nyy 复制光标所在的向下n行
- p,P p将已复制内容在光标下一行黏贴,P黏贴上一行
- u 复原前一个操作
- ctrl + r 重做上一个操作
- . 重复前一个操作
二、编辑模式
- i,I i 当前光标处插入,I 当前行的第一个非空格处插入
- a,A a 光标所在的下一个字符开始插入,A 光标所在行的最后一个字符开始插入
- o,O o 光标所在行的下一行插入新的一行,O相反
- r,R r 替换光标所在字符一次,R一直替换,直到按ESC
三、命令模式
- :q 退出
- :q! 强制退出
- :w 保存
- :w! 强制保存
- :wq 保存并退出
- :! command 暂时离开vi到命令行模式下执行command的显示结果。如:
- :! ls /home 即可在vi中查看home下ls输出的信息
- :set nu 显示行号
- :set nonu 取消行号
四、块选择
- v,V v 字符选择,光标经过的地方反白选择;V 行选择,光标经过的行反白
- ctrl + v 列选择,光标经过的列和字符反白
- y 复制反白的地方
- d 删除反白
五、多窗口
:sp [filename] 打开一个新窗口,如果加 filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容
ctrl + w + j/↓ ctrl + w 放开,然后按j 光标移动到下一个窗口
ctrl + w + k/↑ ctrl + w 放开,然后按k 光标移动到上一个窗口
ctrl + w + q 退出所在窗口