vim操作
一、个人常用配置命令
set nu 设置行号
set tabstop=4 设置tab为4空格距
set shiftwidth=4 设置shift+>为4空格距
set autoindent 设置自动缩进
inoremap ' ''<ESC>i 设置引号自动补全
set termencoding=utf-8 设置屏幕显示编码
set encoding=utf-8 设置vim内部(寄存器、脚本)使用编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 设置自动解码格式
二、配置文件
/etc/vim/vimrc 系统配置文件
~/.vimrc 用户配置文件
~/.viminfo 行为记录文件(主动记录行为以便下次轻松操作)
三、配置参数
set nu 设置行号
set nonu 取消设置行号
set hlsearch 设置查找到的字符串高亮显示
set nohlsearch 取消设置查找到的字符串高亮显示
set autoindent 设置自动缩进
set noautoindent 取消设置自动缩进
set backup 设置自动备份(当改动文件时,原文件被另存为当前目录下"文件名~"的文件)
set nobackup 取消设置自动备份
set ruler 设置显示右下角状态栏
set showmode 设置显示左下角状态栏
set backspace=[0 1 2] 设置进入编辑模式后backspace键是否能删除任意字符(2:删除任意字符;0/1:仅能删除刚才输入的字符)
set all 显示目前所有的环境参数设置
set 显示与系统默认值不相同的设置参数(即:自己改动过的设置参数)
syntax on 设置依据程序相关语法显示不同颜色
syntax off 取消设置依据程序相关语法显示不同颜色
set bg=dark(light) dark与light为两种不同色调
set tabstop=4 设置tab键为4个空格距
四、暂存文件
对文件的操作并不是直接进行,而是在当前目录创建名为.filename.swp的暂存文件
暂存文件警告信息:
[O]pen Reader-Only 只读方式打开
(E)dit anyway 正常方式打开要编辑的文件,并不载入暂存文件
(R)ecover 加载暂存文件内容
(D)elete it 删除暂存文件并打开原文件
(Q)uit 离开
(A)bort 忽略(离开)
五、模式切换
一般模式->编辑模式
i 当前光标所在字符前
I 当前光标所在行前
a 当前光标所在字符后
A 当前光标所在行后
o 当前光标所在行下一行插入新行
O 当前光标所在行上一行插入新行
r 替换当前光标所在字符
R 一直替换当前光标所在字符,指导esc结束
编辑模式->一般模式
esc
一般模式->命令行模式
:、/、?
六、常用命令操作
多窗口
:sp [filename] 水平打开文件
:vsp [filename] 垂直打开文件
ctrl+w+j 将光标移动到下一个窗口
ctrl+w+k 将光标移动到上一个窗口
多文件
vim filename1 filename2 ... 同时打开多个文件(默认显示第一个文件)
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前打开的所有文件
:qa 退出所有文件
块选择
v 选择字符
V 选择行
ctrl+v 选择列
查找与替换
/string 向下查找字符串
?string 向上查找字符串
n 继续向下查找
N 继续向上查找
:n1,n2s/str1/str2/g 在n1行与n2行间,用str2替换str1
:0,$s/str1/str2/gc 在n1行与n2行间,用str2替换str1并询问是否替换
打开文件到指定行
vim filename +lineNum 打开文件光标定位到lineNum行首
vim filename + 打开文件光标定位到文件结束行
七、常用命令操作
恢复
u 恢复前一个操作
ctrl+r 重新执行上一个操作
. 重复前一个操作
删除
x 向后删除一个字符
nx 向后删除n个字符
X 向前删除一个字符
nX 向前删除n个字符
d$ 删除当前位置到行末最后一个字符
d0 删除当前位置到行首第一个字符
dd 删除当前行
ndd 删除当前行向下n行
dnG 删除当前行到第n行所有行
dG 删除当前行到最后一行的所有行
复制
y0 复制当前光标到行首所有数据
y$ 复制当前光标到行尾所有数据
yy 复制当前行
nyy 复制当前行向下n行
ynG 复制当前行到第n行的所有行
yG 复制当前行到最后一行的所有行
粘贴
p 将数据粘贴到光标下一行
P 将数据粘贴到光标上一行
J 将当前行与下一行合并成同一行
八、光标移动
字符移动
h/左键 光标向左移动一个字符
nh/n左键 光标向左移动n个字符
j/下键 光标向下移动一个字符
k/上键 光标向上移动一个字符
l/右键 光标向右移动一个字符
单词移动
w 光标移动到下一个单词词首
nw 光标移动到第n个单词词首
b 光标移动到下一个单词词尾
e 光标移动到上一个单词词尾
句子移动
) 光标移动到下一句
n) 光标移动到下n句
( 光标移动到上一句
段落移动
} 光标移动到下一个段尾
n} 光标移动到下n个段尾
{ 光标移动到上一个段首
行移动
+ 光标移动到非空格的下一行
- 光标移动到非空格的上一行
0 光标移动到行首
^ 光标移动到行第一个字符处
$ 光标移动到行尾
H 光标移动到屏幕第一行行首
M 光标移动到屏幕中间行行首
L 光标移动到屏幕最下行行首
文件移动
gg 光标移动到文件第一行行首
nG 光标移动到文件第n行行首
G 光标移动到文件最末行行首
屏幕移动
ctrl+f 屏幕向下移动一页
ctrl+d 屏幕向上移动半页
ctrl+b 屏幕向上移动一页
ctrl+u 屏幕向上移动半页
标记
m+char 在当前光标位置作出标记,标记名为char
'char 跳转到标记char处
:delmark char 删除指定标记
:marks 列出所有标记
九、保存与离开
:w 保存
:wa 保存打开的所有文件
:w! 强制保存
:q 离开
:q! 强制离开
:wq 保存离开
:wq! 强制保存离开
:w filename 另存为
:r filename 将文件内容加载到光标所在行下
:n1,n2 w filename 将n1行和n2行内容另存为
:!cmd 暂时离开wim执行cmd命令
十、编码问题
查看文件编码格式:vim中使用set enconding
1、编码问题造成的原因
1)Linux系统末日支持的语系数据(/etc/sysconfig/i18n文件有关)
2)终端接口(bash)的语系(LANG有关)
3)文件原本的编码
4)打开终端机的软件
其中3、4时一致的旧能看到正常的文件内容
2、解决编码问题
1)修改打开终端机的软件的编码,比如:修改GNOME-termianl软件编码
LANG=要改变的编码
2)修改文件原本的编码:使用iconv命令
格式:iconv -f 原本编码 -t 新编码 原文件 -o 新文件
iconv --list:列出iconv支持语系数据
-f(from):原本编码格式
-t(to):新编码格式
-o:新文件名:将原文件以新编吗另存为新文件
3、DOS与Linux断行符转换
在DOS中断行符是“^M
”
;
在
L
i
n
u
x
中
断
行
符
是
“
”;在Linux中断行符是“
”;在Linux中断行符是“”,如果两个系统中文件相互导入需要修改断行符
格式: dos2UNIX -k[n] 原文件 [新文件]:将dos文件转成linux文件
UNIX2dos -k[n] 原文件 [新文件]:将Linux文件转成dos文件
-k:保留该文件原本时间
-n:保留原本就文件,将转换后内容输出到新文件
十一、编辑功能
ctrl+p 自动补全
:n1,n2> n1到n2行缩进
:n1,n2< n1到n2行取消缩进
shift+> 缩进选中行
shift+< 取消缩进选中行
十二、目录树
:Vex 垂直打开目录数