vi 下基本分为三种模式一般模式、命令行模式、编辑模式
vi一个文件后进入一般模式在该模式下可以移动光标、复制、粘贴、删除文件数据
一般模式下输入i,I,a,A,o,O,r,R进入编辑模式,可以编辑文本,按下[esc]退出编辑模式进入一般模式
一般模式输入:、/、?进入命令行模式,在命令行模式可以查找、保存、替换、退出等操作
三种模式
一般模式下
光标移动
键盘的上下左右移动光标,num+上下左右移动num行
[page up]:向上翻一页
[page down] :向下翻一页
0 或 home :光标移动到当前行第一个字符
$ 或 end: 光标移动到当前行最后一个字符
H:光标移动到当前页面的第一行
M:光标移动到当前页面的中间行
L:光标移动到当前页面的最后一行
G:光表移动到文本的最后一行
nG:光标移动到文本的第n行
gg:光标移动到文本的第一行
n[Enter]:光标向下移动n行
查找替换
/word:向下查找一个word的字符串
?word:向上查找一个word的字符串
n:重复之前的查找工作
N:与n相反,反向查找上一个需要查找的字符
:n1,n2s/word1/word2/g :在n1行到年n2行之间使用将word1单词用word2单词替换
:1,$s/word1/word2/g :在第一行和最后一行使用word2替换word1
:1$s/word1/word2/gc:从第一行到最后一行使用word2替换word1,在每个单词替换前让用户确认
删除、复制、粘贴
x,X:x删除当前光标所指的字符,并且是向后移动光标删除的。X删除光标前一个字符,是向前删除的。
nx:向后删除n个字符
dd:删除当前行
ndd:删除光标向下n行
yy:复制光标所在的那一行
nyy:复制光标向下的n行
p,P:p在当前行的下一行粘贴,P在当前行的上一行粘贴
u:复原前一个操作
[Ctrl]+r:重做上一个操作
一般模式切换到编辑模式
进入插入模式
i,I:i从目前光标所在处插入,I为当前行第一个非空格字符处插入
a,A:从目前光标所在的下一字符插入,A从当前行最后一个字符出插入
o,O:o光标所在的下一行插入,O光标所在的上一行插入
进入替换模式
r,R:r只会替换光标所在的字符,R会一致替换直到按下[ESC]
一般模式切换到命令行模式
:w 将编辑的数据写入到硬盘中(保存)
:w! 强制将编辑的数据写入到硬盘中去(若为只读模式)
:q 离开vi
:q! 曾经修改过,但不想存储,强制离开
:wq 保存并退出
:wq! 强制保存并退出
:w[filename] 将编辑的数据保存成另一个文件
:r[filename] 编辑数据时,将另一个文件中数据添加到光标所在行后面
:n1,n2 w [filename] 将n1到n2行中数据保存到filename文件中
:! command 暂时离开命令行模式执行command命令,之后回来
:set nu 显示行号
:set nonu 不显示行号
vim功能
vim文件恢复功能
当你编辑文件不正常切断的时候会在当前目录下创建一个.filename.swp的暂存文件,当你要在此打开这个文件的时候会提示你是否要恢复之前的操作。O为只读该文件,E是直接编辑,R是恢复之前的修改操作,D是认为这个文件没用删除这个暂存文件,Q是直接退出。操作完之后除了D,需要手动删除这个文件,否则每次会提示你。
vim是vi的高级版,一般vim已经把vi替换掉了。因为vim有颜色提示功能、还支持多种程序语法等。
vim的块选择
v:字符选择,光标移动过得地方会反白
V:行选择,光标移动过得行会反白
[Ctrl]+v:块选择,光标移动过得块会反白
y:将反白的地方复制下来
p:粘贴之前复制的
d:删除反白的地方
vim多文件编辑
vim file1 file2
首先进入file1中进行编辑,输入:n会进入下一文件进行编辑;:N会进入上一个文件编辑;:files会列出vim打开的文件
vim多窗口功能
当打开一个文件的时候,如果让该文件显示多个窗口
:sp 即可
如果多窗口打开不同的文件
:sp [filename]
上下窗口切换[ctrl] +w
vim使用历史记录
如果使用过vim,会在你的主目录下创建一个.viminfo文件,这个文件记录你之前做过的操作。
vim环境设置
在命令行模式下输入set all 可以查看所有vim的设置。可以通过set xx设置,比如 set nu设置显示行号。
这种方式只在当前有效,如果要长期有效需要修改 /etc/vimrc(ubuntu下是/etc/vim/vimrc)来设置我们习惯的vim操作环境,整体的vim设置在这里,但是一般不建议修改这个文件,可以修改 ~./.vimrc这个文件默认是不存在的,可以手动创建
比如:
vim ~/.vimrc
set nu "设置行号
set hlsearch "高亮度反白
set autoindent "自动缩排
set backspace=2 "可以随时用退格键删除
set ruler "显示最下面提示
set bg=dark "显示不同的底色色调
syntax on "进行语法检查,颜色显示
乱码解决
终端显示乱码原因有很多,Linux支持语系、终端接口语系(用LANG设置)、原文见编码、打开终端的软件如GNOME等,这里有一个方法可以实时,如果文件是big5编码的
LANG=zh_CN.big5
然后终端->设置字符编码->中文(BIG5)
语系编码转换
可以使用iconv(需要下载iconv,然后到该目录下执行命令)然后使用iconv进行语系转换
iconv --list
iconv -f 原本编码 -t 新编码 filename[-o newfile]
版权声明:本文为博主原创文章,未经博主允许不得转载。