VIM使用基础篇
VIM常用命令总结
1、四个模式
(1)一般模式
Linux系统下或者用软件直接打开未进入VIM编辑器的时候时的模式。
(2)命令模式
在一般模式下,输入[vim]或[vi]进入命令模式,退出命令模式可用[:q!]命令来操作。
(3)底线命令模式
在命令模式下,输入[:]可进入底线命令模式,返回至命令模式可按ESC按键。
(4)插入模式
分6种:
第一是[i](可以在当前光标之前插入文本)
第二是[I](在行前插入)
第二是[a](可以在当前光标之后插入文本)
第三是[A](在光标所在行的末尾添加文本)
第四是[o](在当前行的下一行插入文本)
第五是[O](在当前行的上一行插入文本)
返回至命令模式,按ESC按键
2、打开命令(1、2、3是在未打开任何文件的基础上打开文件;4、5、6、7、8是在已打开文件的基础上打开文件)
(1)[vim 文件名]:如果当前文件夹下没有该文件名则就新建一个文件,若是有该文件则直接打开。
(2)[vim -o 文件1 文件2]:可以打开多个文件。该命令打开的是水平窗口分隔的视图模式
(3)[vim 文件1 文件2 ]:可同时打开多个文件但是不在同一屏显示,所以需要用命令:n来切换打开的文件。
(4)[:tab split/new]或是[:tabnew] 在已打开文件的基础上再打开文件, 这个命令与(3)命令不同的地方就是需要用gt命令进行不同文件的切换
命令详解:[:tab split]单纯的这条命令是在已打开文件的基础上,在打开一个同已打开文件一样的视图,且不在同一屏显示(gt进行切换)
[:tabnew]是在已打开文件的基础上,不在同一屏打开一个新的视图(gt切换)
(5)[:split 文件名](已存在) 这个命令是在已打开文件的基础上,打开一个在同一屏窗口打开的水平视图模式,
(6):new命令能打开新的文件区域,也是水平的区域的视图。
(7):vsplit 文件名(已存在)在已打开文件的基础上在同一屏打开一个垂直的视图,:vsplit命令只是打开一个同已打开文件一样的视图
(8):vnew 命令打开一个垂直的新的区域。
3、在已打开水平或是垂直的窗口模式下进行切换时的命令
ctrl+W+h:左区域
ctrl+W+l:右区域
ctrl+W+j:下区域
ctrl+W+k:上区域
ctrl+W+t:顶部区域
ctrl+W+b:底部区域
4、窗口的关闭与离开vim
ZZ 保存并退出
:close 关闭最后打开的一个视图,但保留最后一个
:quit 关闭窗口,可以关闭最后一个
:only 关闭除当前窗口之外所有的窗口,但前提其他窗口必须全部保存
:qall 在保证全部窗口都已保存的状态下,退出全部窗口。
:q 关闭窗口 前提必须保存
:wall 保存所有窗口
:wqall 保存所有并退出
:q! 不保存,并退出vim
:wq或者是:x 保存并退出vim
5、移动类操作
$ 移动到当前行的末尾
^ 移动到当前行的第一个非空白字符上
0 移动到当前行的第一个字符上(可以是空白字符)
gg 跳转到第一行(可以是空白行)
G 定位到最后一行(可以是空白行)
zz 将光标所在行,移到当前屏幕的正中央
zt 将光标所在行,移到当前屏幕的第一行,若是光标在文档的第一行,则该命令无作用。
zb 将光标所在行,移到当前屏幕的最后一行。若是光标在文档的最后一行,则该命令无作用。
H 移至当前屏幕的第一行
M 移至当前屏幕的中间一行
L 移至当前屏幕的最后一行
:行号 移至文件的第n行
n+ 移至光标之后第n行
n- 移至光标之前第n行
w 将光标向前移动一个单词的首字符上
b 将光标向后移动一个单词的首字符上
ge 将光标向前移动一个单词的尾字符上
e 将光标向后移动一个单词的尾字符上
shift+G 跳至最后一行
行号 shift+G 跳至指定行号的行
ctrl+g 显示当前光标所在位置和文件状态的信息
6、删除类命令
x 删除光标所在位置的字符
X 删除光标之前的字符
D 删除光标至行尾的字符
:行号1:行号2d 删除范围内的资料
:数字d 删除第‘数字’行的资料
:%d 删除整个编辑缓冲区的资料
dd 删除整行
dw 光标所在位置至单词末尾
db 光标所在位置至前一个单词的开始
diw删除当前单词 不包含空格
daw删除当前单词 包含空格
dG 删除至文章末尾
dgg删除至文章开头
d$ 删除至行尾的
7、复制与取出
y 复制
yy 复制一整行
p 复制后取出与删除后取出
:行号1,行号2co行号3 将第行号1至第行号2的资料复制到第行号3之后
:行号1,行号2mo行号3 将第行号1至第行号2的资料搬移至第行号3之后
8、搜索类命令
/ 从光标处向后搜索
? 从光标处向前搜索
shift+# 光标所在位置的单词 向前搜索
shift+* 光标所在位置的单词 向后搜索
% 可以匹配)}】括号
9、撤销类命令
u 撤销最后的命令
U 撤销一行内的操作
ctrl+R 重做
10、替换类命令
r 替换原来位置的字符
cw 替换当前光标至单词末尾的内容
c$ 替换当前光标至行末的内容
R 连续替换字符
:s/old/new/g 替换一行中的字符
:%s/old/new/g 提行整个文章中的字符
:#,#s/old/new/g 替换选定行中的字符
11、读写资料
:行号1,行号2w 文件名 将行号内范围的资料写入规定的文件内
:行号1,行号2w>>文件名 将行号内范围的资料写入该文件之后
:r+文件名 将文件插入到当前编辑文件的光标所在位置
:e [filename] 编辑新的文件
:e! [filename] 放弃当前修改的文件,编辑新的文件
:sh 进入shell环境,使用exit退出,回到编辑器中
#,# w 文件名 保存选定行号的内容
12、比较文件
vimdiff 文件1 文件2
13、环境的设定
:set all 可设置的环境变量列表
:set 环境变量的当前值
:set nu 设定资料的行号
:set nonu 取消行号设定
:set ai 自动内缩
:set noai 取消自动内缩
:set ruler 会在屏幕右下角显示当前光标所处位置,并随光移动而改变,占用屏幕空间较小
:set hlsearch 在使用查找功能时,会高亮显示所有匹配的内容
:set nohlsearch 关闭查找高亮功能
:set incsearch 使vim在输入字符串的过程中,光标就可定位显示匹配点
:set nowrapscan 关闭查找自动回环功能,即查找到文件结尾处,结束查找,默认状态是自动回环
:set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 设定文件的编码
:syntax on 开启语法加亮
:colorscheme pablo 配色风格
:set linespace=4 设定行距 GUI界面中生效
设定GUI选项
:set guioptions=gmrLt m:菜单
:set guioptions=gmrLt T:工具栏
:set tabstop=4 设定Tab键缩进的空格数
:set shiftwidth=4 设定编辑器将多少空格视为一个缩进
:set expandtab 将缩进转换为空格
:set foldmethod=indent 设定折叠方式
:set iskeyword+=33-47,58-64,91-96,123-128 字符将被视为单词的一部分 (ASCII)

浙公网安备 33010602011771号