1.介绍
最近接触了Linux,其中主要用到了VIM这个编辑软件,发现上手居然如此困难,还专门找了教程去学习,下面贴一下各个编辑器使用的难度。
图1
可以看到,VIM的门槛是比较高的,这就不得不去学习一下,虽然挺难学的,但是我觉得使用起来的话,会比其他的编辑器好用,操作更灵活,不需要使用鼠标就可以完成所有的操作,就是因为这个,我觉得要学VIM这个编辑器,当然windows下也有相关的软件,叫做【gVim】,为什么说它好用呢,因为它完全自定义,插件、命令和布局等属于一个完全可以DIY的编辑器。
2.指令
下面是我学习过程中记录的笔记,非常之多,想要熟练的话时间也会比较久,一开始会很困难,但是后面熟练了之后,编辑文档的速度就会非常快速了。
1)模式
Normal模式-->>Insert模式:
【i】:在光标所在处插入
【I】:在行头插入
【o】:在当前行后面插入一行并插入
【O】:在当前行前面插入一行并插入
【a】:在当前光标后面一位进行插入
【A】:在当前行尾插入
Insert模式-->>Normal模式:
【ESC】按钮或者【Ctrl+[】按钮,一般选择【Ctrl+[】,这样比较方便,当然也可以修改【CapsLock】为【ESC】按钮。
Normal模式-->>指令模式
【:】
【:w】:存档
【:q】:q离开,加上【!】则强制离开
【:wq】:存档后离开
2.后台
【Ctrl+Z】:将vim后台,后台之后输入【fg】回车回到vim编辑
3.移动
【:set nu】显示行号
【H】【J】【K】【L】:为左、下、上和右
【w】:一次向后跳动一个单词
【W】:一次向后跳动一个完整的单词,跳过标点符号
【b】:一次向前跳动一个单词
【B】:一次向前跳动一个完整的单词,跳过标点符号
【Ctrl+}】:向后跳一个段落
【Ctrl+{】:向前跳一个段落
【G】:跳到最后一行
【gg】:跳到第一行
【0】:到该行第一个字符(包括空白符)
【^】:到该行的第一个单词
【$】:到改行的最后一个字符
【gj】【gk】:在同一行向下或者向上移动
【Ctrl+b】:向上滚动一页
【Ctrl+f】:向下滚动一页
【Ctrl+u】:向上滚动半页
【Ctrl+d】:向下滚动半页
【xxG】:移动到xx一行
4.查找和替换
【:set hlserach】:高亮显示查找的内容
【:set nohlserach】:取消高亮显示查找的内容
【/】:在后面输入需要查找的内容回车,使用【n】往下搜索,【N】往回搜索
【?】:在后面输入需要查找的内容回车,使用【n】往回搜索,【N】往下搜索
【*】:搜索光标当前所在的单词,使用【n】往下搜索,【N】往回搜索
【#】:搜索光标当前所在的单词,使用【n】往回搜索,【N】往下搜索
【f】:后面输入字符,搜索当前行后面存在的输入字符
【F】:后面输入字符,搜索当前行前面存在的输入字符
【:s/a/b/x】:将当前行a替换成b,x等于g将当前行的所有a替换成b
【:%s/a/b/x】:x等于g将每一行的a替换成b
5.界面调整
【zz】:将光标位置显示在画面中间
【zt】:将光标位置现实中在画面顶部
【zb】:将光标位置现实中在画面底部
6.Visual模式
【v】:选取一个字符,可以使用各种移动模式或查找模式
【V】:选取一整行,可以使用各种移动模式或查找模式
【Ctrl+v】:选取一块(类似正方形一样),可以使用各种移动模式或查找模式,在一行前面加上注释使用
7.复制和粘贴
【:set clipboard=unnamed】:将剪切板的内容和暂存器内容共通
【y】:复制光标或者可视模式选中的内容,【y位移】可以复制从按下y所在的光标到下一次位移所停留地方的内容
【yy】:复制一整行,【xxyy】xx为数字时,则复制光标下xx行的内容
【p】:粘贴暂存区的内容,【xxp】xx为数字时,则粘贴xx次内容,粘贴的位置为光标所在的后一位
【P】:粘贴暂存区的内容,【xxP】xx为数字时,则粘贴xx次内容,粘贴的位置为光标所在的前一位
【“xy】:x一共从a-z,说明把内容存到a暂存器,【yy】也一样
【“xp】:x一共从a-z,说明把内容从a暂存器粘贴出来,【P】也一样
8.撤销和重做
【u】:回到上一步
【Ctrl+r】:重做
9.删除和剪切
【x】:删除光标所处内容或可视模式选取的内容,并放入暂存器
【d】:只能删除可视模式选取的内容,【d位移】删除按下d时光标所在位置到位移后的所有内容,并放入暂存器
【D】:删除这一行光标后的所有内容,并放入暂存器
【dd】:删除光标所在处一整行,【xdd】:x为数字,删除x行,并放入暂存器
【c】:和【d】类似,处理完成后会进入输入模式
【C】:和【C】类似,处理完成后会进入输入模式
10.替换
【rx】:光标所处内容更换为x的内容
11.缩进控制
【set shiftwidth=x】:设置缩进宽度为x
【>>】:向右边缩进一个【shiftwidth】宽度,【x>>】x为数字时x行往右边缩进
【<<】:向左边缩进一个【shiftwidth】宽度,【x<<】x为数字时x行往左边缩进
【>】:选取的内容向右边缩进一个【shiftwidth】宽度
【<】:选取的内容向左边缩进一个【shiftwidth】宽度
【=】:选取内容自动做缩进处理,根据语言自行配置
12.多个编辑窗口
【vim -p xx.c xx.h】:一次开启两个文件,分页模式打开
【:tabe】:新建一个窗口,在后面跟上文件名,则直接打开文件名,使用【gt】命令进行切换窗口
【vim -o xx.c xx.h】:一次开启两个文件,默认水平视窗
【vim -O xx.c xx.h】:一次开启两个文件,默认垂直视窗
【:new】:新建一个水平视窗,荣光【Ctrl+w+方向】进行视图切换,【Ctrl+w+w】则循环切换
【:vnew】:新建一个垂直视窗,切换如上
13.Buffer
【vim xx.c xx.h】:直接打开两个文件,【%a】显示为当前所在文件,【#】表示上一个编辑的文件
【:ls】:查看已打开的文件
【:bx】:切换到指定的文件中,x代码文件的编号,【b xxx】xxx为文件的部分名字切换到这个文件,【bn】下一个,【bp】上一个,【bl】最后一个,【bf】第一个,【bd】关闭当前buff
【Ctrl+6(^)】:切换为上一个位置,用于循环切换
【:tab ba】:将文件变成窗口化显示出来
14.联合操作
【viw】:选取一整个单词
【vaw】:选取一整个单词加上后面的一个字符
【v(a|i)”】:选取双引号中间的内容
【v(a|i)t】:选取tag中间的内容,多用于html文件
【v(a|i)x】:x可以是好多位移功能
【d(a|i)x】:删除满足条件的内容
【c(a|i)x】:删除满足条件的内容
【y(a|i)x】:复制满足条件的内容
【vis】:s为一句话,到句号结尾
【vip】:p为一个段落
【v3w】:选取三个单词
还有很多。。。自行探索
15.小技巧
【zf】:将选取的段落折叠起来,【zd】还原,【l】还原
【zfip】:将选取的段落折叠起来
【~】:大小写互换
【.】:重复做之前的事,如注解
【J】:将下一行移动到当前行的后面
Insert模式开始:
【Ctrl+w】:删除当前光标前面的单词,最好在这个单词的尾巴
【Ctrl+u】:删除这一行当前光标前面的内容
Insert模式结束。
【:! 终端指令】:会回到终端执行这一条指令
【:r !指令】:将输出到终端的内容写到光标后面
【vimtutor zh_tw】:在终端输入这条指令,打开自带的VIM教程
【help(h) 指令】:查看指令的功能是说明
16.VIM配置文件
【set number】:设置行号
【set clipboard=unnamed】:与剪切板共用缓存
【set hlsearch】:高亮查找内容
【set cursorline】:光标所在行有底线的效果
【set noswapfile】:关闭swap备份文件的出现
【set softtabstop=4】:使用四个space取代tab
【set shiftwidth=4】:使用四个space作为缩进
【set expandtab】:使用space取代tab,用于替换文本中的tab,在文件中输入【:retab】即可替换
【set ignorecase】:搜索的时候不分大小写
【set incsearch】:搜索时输入部分内容就显示
【set showtabline=2】:表示会永远显示tab的标签
【set splitbelow】:新增水平视窗会在新增在下边
【set splitright】:新增垂直视窗会新增在右边
【syntax on】:程序关键内容高亮,自动上色
【filetype on】:检测代码类型
【filetype indent on】:自动进行缩进
【filetype plugin on】:根据程序语言载入外挂
【set ruler】:显示当前光标所在的行列
【set nowrap】:不进行换行,【set wrap】进行自动换行
【set linebreak】:自动换行根据一个单词单词进行换行
【set showmode】:显示当前所在模式
【set showcmd】:显示输入的指令
【set scrolloff=x】:在第x行就开始往下翻
【set smartcase】:搜索的内容中有大写字则区分大小写进行搜索
【set list】:显示换行或者tab内容
17.Key Mapping
一共有Map/nMap/vMap/iMap,对应下表,设置相应的映射
【map a b】:将b映射为a,具体可以区【:h key-notation】去查看,【<Nop>】是没有任何映射,用于取消上下左右的功能
【xmap】:查看映射后的指令,x在某个模式下
【xunmap】:<C-C>清除这个按键映射,x在某个模式下
【mapclear】:清除所有自定义按键映射配置
【xnoremap】:只映射一次,最好用这替换【map】,不会如下循环嵌套【map a b】【map b c】【map c a】
【<leader>x】:默认是\,在输入指令之前写一行这个
【colorscheme x】:切换为相应的主题,输入【colorscheme 】后按下【Ctrl+D】可以显示可以设置的主题
18..vimrc语法
【try ..a.. catch ..b.. endtry】:执行a指令,如果执行问题则执行b指令
3.总结
可以看到指令是非常之多的,因为少了一个鼠标操作,所以全部操作都是通过命令来执行的,准备把windows下的文本编辑器也换成VIM,这样就可以更快熟练了!