vi的使用模式:
一般模式
命令行输入vi进入的就是一般模式,可以使用【上下左右】移动光标,使用【删除字符】【删除整行】处理文件内容,使用【复制黏贴】处理文件
移动光标
h或左键 | 光标向左移动一个字符 |
j或下键 | 光标向下移动一个字符,30j或30下键可以跳30行 |
k或上键 | 光标向上移动一个字符 |
l(L)或右键 | 光标向右移动一个字符 |
ctrl + f | 屏幕向下移动一页,同page down |
ctrl + b | 屏幕向上移动一页,同page up |
ctrl + d | 屏幕向下移动半页 |
ctrl + u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n<space> | n表示数字,按下数字后按空格,光标会向右移动n个字符 |
0或home键 | 移动到这一行的最前面字符 |
$或end键 | 移动到这一行的最后字符处 |
H | 光标移动到屏幕最上方一行的第一个字符 |
M | 光标移动到这个屏幕中间行的第一个字符 |
L | 光标移动到这个屏幕最下行的第一个字符 |
G | 移动到文件的最后一行 |
nG | n为数字,移动到文件的第n行 |
gg | 移动到这个文件的第一行 |
n + 回车 | n为数字,光标向下移动n行 |
查找与替换
/word | 向光标之下查找word字符串 |
?word | 向光标之上查找word字符串 |
n | 是n按键,重复前一个查找的动作 |
N | 大写N按键,反向前进前一个查找动作 |
:n1,n2s/word1/word2/g | n1,n2为数字,s是必须打上去的。 在n1与n2行之间查找word1字符串, 并将该字符串替换为word2 |
:1,$s/word1/word2/g 1:,$s/word1/word2/gc | 第一行到最后一行查找word1字符串, 并替换为word2 第一行到最后一行查找word1字符串, 并替换为word2,并需要用户确认 |
删除复制粘贴
x,X | x为向后删除一个字符相当于del键, X为向前删除一个字符相当于backspace |
nx dd | n为数字,连续向后删除n个字符 删除光标所在那一行 |
ndd | n位数字,删除光标所在乡下n列 |
d1G | 删除光标所在到第一行所有数据 |
dG d$ | 删除光标所在到最后一行所有数据 删除光标所在,到该行最后一个字符 |
d0 | 数字0,删除光标所在处到该行第一个字符 |
yy | 复制光标所在行 |
y1G | 复制光标所在列到第一列的所有数据 |
yG | 复制光标所在列 |
nyy | n为数字,复制光标所在的乡下n列 |
y0 | 复制光标所在字符到该行行首的所有字符 |
y$ | 复制光标所在字符到该行行尾的所有字符 |
p,P | p为将已复制的数据在光标下一行贴上,P则为贴在光标上一行 |
J | 将光标所在列与下一列的数据结合成同一列 |
c | 重复删除多个数据,如10cj |
u | 复原之前一个动作 |
ctrl + r | 重复上一个动作 |
. | 重复前一个动作 |
区块模式
v | 字符选择,会将光标经过的地方反白选择 |
V | 行选择,会将光标经过的行反白选择 |
ctrl+v | 区块选择,用长方形方式选择 |
y | 反白地方复制 |
d | 反白地方删除 |
编辑模式
在一般模式中按【i,I,o,O,a,A,r,R】等任意一个字母就会进入编辑模式,此时指令列会出现insert或replace字样,按下【esc】按键可以退出编辑模式
i,I a,A | 进入插入模式 i为从光标所在处插入 I为光标所在行第一个非空字符串处插入 进入插入模式 a为从光标所在的下一个字符开始插入 A为从光标坐在的最后一个字符开始插入 |
o,O | 进入插入模式 o为光标所在的下一行插入新一行 O光标所在处的上一行插入新一行 |
r,R | 进入取代模式Replace mode r只会取代光标所在的那一个字符一次 R会一直取代光标所在文字,直到按下ESC为止 |
Esc | 退出编辑模式,回到一般模式中 |
指令列命令模式
在一般模式红中输入【:,/,?】三个字符的任意一个都可以将光标移到指令列,在这里可以读取、保存、退出程序
指令列的保存离开等
:w | 将编辑的数据写入硬盘文件 |
:w! :q :q! | 文件为只读时,强制写入文件 离开vi 离开不保存文件,!在vi中有强制的意思 |
:wq :wq! | 保存后离开 强制保存后离开 |
ZZ :w [filename] | 大写Z,若文件没有变动,不保存离开 若文件被改动,保存后离开 将编辑的数据保存成另一个文件(另存为) |
:r [filename] | 读入另一个文档的数据,将filename文件内容添加到光标后面 |
:n1,n2 w [filename] | 将n1到n2的内容存到文件中 |
:! command | 暂时离开vi到指令模式下执行command显示结果 例:【:! ls /home】 |
多文档编辑
:n | 编辑下一个文档 |
:N | 编辑上一个文档 |
:files | 列出目前这个vim打开的所有文件 |
多窗口功能
:sp [filename] | 开启新窗口 加filename表示在新窗口创建新文件 否则表示两窗口为同一个文件内容 |
先ctrl+w再按j 先ctrl+w再按下键 | 光标移动到下方窗口 |
先ctrl+w再k 先ctrl+w再按上键 | 光标移动到上面窗口 |
先ctrl+w再按q键 | 离开当前光标所在窗口 |
vim环境的变更
:set nu :set nonu | 显示行号 取消显示行号 |
:set hlsearch :set nohlsearch :set autoindent :set noautoindent | hlsearch high light search,是否将搜寻的字符串反白,默认hlsearch 是否自动缩进 |
:set backup | 是否自动保存备份。默认nobackup,设定后会多出一个filename~文件 |
:set ruler | 是否显示状态栏说明 |
:set showmode | 是否要显示INSERT之类在状态栏左下角,建议打开 |
:set backspace=(012) | backspace删除字符设定 为2时可以删除任意值; 0或1时,仅可删除刚输入的字符无法删除原有的文字 |
:set all | 显示当前的所有环境参数设定 |
:set | 显示与系统默认值不同的设定参数 |
:syntax on :syntax off | 依据程序相关语法显示不同颜色 |
:set bg=dark :set bg=light | 显示不同的颜色色调 |
vim的暂存文件
vim会在被编辑文件的目录下建立.filename.swp文件
多人编辑文件时
o键,open read-only 以只读方式查看暂存文件
vim崩溃时
r键,recover 将暂存文件救回来,暂存文件需要手动删除
d键,delete 将暂存文件删除
存在暂存文件时
o键,open read-only 以只读方式查看暂存文件
e键,Edit anyway 正常方式打开编辑文件
r键,recover 将暂存文件救回来,暂存文件需要手动删除
d键,delete 将暂存文件删除
q键,quit 离开vim
a键,abort 忽略编辑,退出vim
转换编码iconv
iconv --list
iconv -f 原编码 -t 新编码 filename [-o newfile]
--list: 列出iconv支持的语言编码
-f: from,原本的编码格式
-t: to,新编码格式
-o file: 保留原本的文件,建立新文件