vi/vim 的使用/常用命令
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
操作模式
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 vim 识别为命令,而非输入字符。
输入模式
在输入模式中可以对文本进行编辑,按
ESC
进入命令模式。
底线命令模式
在命令模式中输入
:
进入底线命令模式。
:w
: 保存,后边可以追加文件名就是另存为:w!
: 强制保存,跟你的权限有关:q
: 退出:q!
: 强制退出:x
: 写入并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间:r filename
: 在编辑的数据中,读入另一个文件的数据。即将 filename 这个文件的内容加到光标所在行后面ZZ
: 保存并离开 注意没有:
常用命令
进入输入模式
:
i
: (插入),从目前光标所在处插入I
: (插入),从目前光标所在行第一个非空字符插入a
: (插入),从目前光标所在的下一个字符处开始插入A
: (插入),从光标所在行的最后一个字符处开始插入o
: (插入),在目前光标所在的下一行处插入新的一行O
: (插入),在目前光标所在处的上一行插入新的一行r
: (替换),只会取代光标所在的那一个字符一次R
: (替换),会一直取代光标所在的文字,直到按下ESC
为止
光标移动
:
h j k l 或者 ← ↓ ↑ →
: 左、下、上、右Ctrl b
: 向上翻页Ctrl f
: 向下翻页Ctrl u
: 向上翻半页Ctrl d
: 向下翻半页n Space
: 光标向后移动 n 位n Enter
: 光标向下移动 n 行Home 或者 0
: 光标移动该行首位End 或者 $
: 光标移动该行末尾w
: 下个字的首位e
: 下个字的末尾H
: 光标移动到这个屏幕的最上方那一行的第一个字符M
: 光标移动到这个屏幕的中间那一行的第一个字符L
: 光标移动到这个屏幕的最下方那一行的第一个字符G
: 移动到这个文件的最后一行nG
: 移动到这个文件的第 n 行gg
: 移动到这个文件的第一行
查找
:
/ A
: 向下查找关键字 A,n
表示继续查找下一个,N
与n
相反? A
: 向上查找关键字 A,n
表示继续查找下一个,N
与n
相反:n1,n2s/word1/word2/g
: 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2:1,$s/word1/word2/g
: 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2:1,$s/word1/word2/gc
: 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2。且在取代前显示提示字符给用户确认 (confirm) 是否需要取代
删除
:
x
: 删除光标所在位置的后面一个字符nx
: 删除光标所在位置的后面 n 个字符X
: 删除光标所在位置的前面一个字符nX
: 删除光标所在位置的前面 n 个字符dd
: 删除光标所在行ndd
: 从光标所在行开始删除 n 行dG
: 删除光标所在行到最后一行之间的数据dgg | d1G
: 删除第一行到光标所在行之间的数据d$
: 删除该行光标所在位置之后的数据,包括该位置的数据d0
: 删除该行光标所在位置之前的数据,不包括该位置的数据
复制
:
yy
: 复制光标所在行nyy
: 从光标所在行开始复制 n 行yG
: 复制光标所在行到最后一行之间的数据ygg | y1G
: 复制第一行到光标所在行之间的数据y$
: 复制该行光标所在位置之后的数据,包括该位置的数据y0
: 复制该行光标所在位置之前的数据,不包括该位置的数据
粘贴
p
: 将已复制的数据在光标下一行粘贴上P
: 将已复制的数据在光标上一行粘贴上
恢复
:
u
: 恢复前一个操作Ctrl r
: 重做上一个操作.
: 是重复前一个操作
块选择
:
v
: 字符选择,会将光标经过的地方反白选择V
: 行选择,会将光标经过的行反白选择Ctrl v
: 块选择,可以用长方形的方式选择资料y
: 将反白的地方复制d
: 将反白的地方删除
多文件
:
:n
: 多文件编辑的时候,下一个文件:N
: 多文件编辑的时候,上一个文件:files
: 多文件编辑的时候,文件列表:sp
: 开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新文件,否则表示两个窗口为同一个文件内容(同步显示)Ctrl + w j
或者Ctrl + w ↓
光标可移动到下方的窗口Ctrl + w k
或者Ctrl + w ↑
光标可移动到上方的窗口
环境设置
::set nu
: 设置行号:set nonu
: 取消行号:set hlsearch
: 设置高亮度查找:set nohlsearch
: 取消高亮度查找:set backup
: 自动备份文件:set ruler
: 开启右下角状态栏说明:set showmode
: 显示左下角的 INSERT 之类的状态栏:set backspace={0,1,2}
: 设置退格键功能。为 2 时可以删任意字符。为 0 或 1 时仅可以删除刚才输入的字符。:set all
: 显示目前所有的环境参数值:set
: 显示与系统默认值不同的参数值:syntax on/off
: 是否开启依据相关程序语法显示不同的颜色:set bg=dark/light
: 是否显示不同的颜色色调- 但是我们没有必要每次使用 vim 都要重新设置一次各个参数值。我们可以通过配置文件来直接规定我们习惯的 vim 操作环境。整体 vim 的设置值一般是放在
/etc/vimrc
中的。我们一般不要修改这个文件。我们可以通过修改~/.vimrc
这个文件,如果不存在,可以手动创建。然后将我们所希望的设置值写入
vim ~/.vimrc # set前面也可以加冒号,结果一样 set hlsearch set backspace=2 set ruler set showmode set nu syntax on