vi 文件名 进入命令模式
命令模式--i、a、o、I、A、O-->插入模式--ESC键-->命令模式
i:在光标之前添加文本
I:在光标行首添加文本
a:在光标之后添加文本
A:在光标行末添加文本
o:在光标下插入新行
O:在光标上插入新行
命令模式--:-->编辑模式--回车-->命令模式
:set nu 回车设置行号
:set nonu 回车取消行号
:n 移至文件的第n行
:n1,n2d 删除n1到n2行的内容
vi默认没有设置行号,可以修改每个用户的vi配置文件让它进入vi的时候显示行号
进入用户的根目录,vi .vimrc,然后写上set nu保存退出,以后这个用户的vi编辑器就会显示行号
命令模式
ZZ: 退出
h: 左移一个字符
j: 下移一个字符
k: 上移一个字符
l: 右移一个字符
$: 移至行尾
0: 移至行首
Enter:移至下行行尾
H: 移至屏幕上端
M: 移至屏幕中端
L: 移至屏幕下端
G: 移至文件的最后一行
nG:移至文件的第n行,1G移至文件的第1行,10G移至文件的第10行
x: 删除光标所在的一个字符(相当于向后删除)
X: 删除光标前面的一个字符(相当于向前删除)
dd: 删除光标所在的行
dG: 删除光标所在的行到末尾的内容
D: 删除光标所在处到行尾的内容
u:撤销
yy,Y: 复制当前行
nyy,nY:复制包括当前行在内的n行
p: 将已经选择复制或被删除的行放到当前行下(粘贴)
r: 取代光标所在处的字符
R: 从光标所在处开始替换字符,按ESC结束
s: 替换光标所在处字符并进入文本输入方式
S: 替换光标所在全行,按ESC结束
u: 取消上一步操作(取消到上次打开文件的点上,并不是上次保存的点上),ctrl+r取消取消的操作
U: 取消当前行的所有操作
:w 保存
:w new_filename 另存为
:wq 保存退出
ZZ
:q 不保存退出
:q! 强制不保存退出
:wq!强制保存退出
:x
:x!
/string 搜索字符串
?string 搜索字符串
n 向下搜索(?向上)
N 向上搜索(?向下)
:%s/旧的字符串/新的字符串/g 将旧的内容全部替换为新的内容
:%s/旧的字符串//g 将旧的内容删除
:r 文件名
:!操作系统命令
vi -o file1 file2 同时打开多个文件(水平排列)
vi -O file1 file2 同时打开多个文件(垂直排列)
ctrl+ww 文件之前切换
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding
它们的意义如下:
encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。
fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。 用英文菜单和提示最好,可以免去下面对菜单和提示信息(B,C部分)的设置如果用英文菜单和提示在安装gvim的时候,将支持本地语言的选项去掉。
解决vim文件乱码,打开文件乱码,菜单,提示信息乱码: 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding 在linux中修改.vimrc(在win中是_vimrc)
A,"设置文件的代码形式
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936
B,"vim的菜单乱码解决: "
同样在 _vimrc文件里以上的中文设置后加上下列命令,
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
C,"vim提示信息乱码的解决
language messages zh_CN.utf-8