《运维之道》
vim工作模式
普通模式(默认):实现基本的光标移动及大量快捷键操作。
插入模式:文本的基本编辑。
命令模式:通过输入特定的指令实现特定的功能,如保存与退出等。
直接vim,进入一个新文件,保存时需要指定文件名
vim后面跟文件名参数,如果存在文件,则直接打开,不存在,则新建。
<leader>默认是"\"
改成其他 let mapleader=","
a 插入模式,插入当前光标后面
A 插入当前段落的段尾
i 插入当前光标前面
I 插入当前段落的段首
o 在当前行的后面创建新的空白行
O 在当前行的前面创建新的空白行
ESC 返回普通模式
: 进入命令模式
保存与退出
:q! 不保存强制退出
:w 保存
:wq! 强制保存退出
:x 保存并退出
:w a.txt 另存为a.txt
普通模式ZZ也可保存退出
小技巧:
显示行号 :set number或:set nu 取消:set nonu
忽略大小写 :set ignorecase 不忽略:set noignorecase
vim编辑时执行shell命令
:!{命令} 如:!ls/
执行完后回车返回
自动补齐
前面若输入了AJIOY,再次输入时,AJ,ctrl+n即可
合并上下行 ctrl+j
多窗口编辑
:split [filename] sp
水平分割
:vsplite vsp
垂直分割
#如果加文件名,则新开一个文档,不加则表示同一个文档
ctrl+w+j
#切换到下一个窗口
ctrl+w+k
#切换到上一个窗口
ctrl+w+h
#左窗口
ctrl+w+l
#右窗口
ctrl+w+q 或:q或:close
#关闭当前窗口
其他汇总:
Undo/Redo 撤消和重做
u/U → undo
<C-r> → redo
《马哥linux》与网络收集
vi:visual interface
vim: vi iMproved
一:打开文件
vim +# :打开文件定位到#行
vim +: 打开文件定位到最后一行
vim +/PATTERN:打开,定位到第一次PATTERN出现的匹配行
下方提示100L,200C表示此文件有100行,200个字符
二:模式转换
普通->插入 a i o A I O
插入->编辑 ESC
编辑->命令 :
三:移动光标(普通模式下)
1.逐字移动
h 往左 手指往左挪
j 往下 japan日本下流
k 往上 korea韩国在中国上面
l 往右 手指往右挪
#hjkl 移动#个字符
2.单词移动
w 移到下一个单词的词首
e 跳至当前或下一个单词的词尾
ge 跳至上一个单词的词尾
b 跳至当前或下一个单词的词首
W E gE B 是对字符串进行跳转
ta 跳至下一个a的前面,a可以是任意字符
Ta 与上面相反,跳至上一个a的后面
fa 跳至下一个a
Fa 跳至上一个a
#l 往后跳#列
#L 往前跳#列
% 跳至括号
#% 跳至百分比#的地方
#web 移动#个单词
3.行内跳转
0 跳至绝对行首
^ 跳至行首的第一个非空白字符
$ 跳至绝对行尾
4.行间跳转
#G 跳转至#行
G 跳至最后一行
gg 跳至首行
10gg 或10G 跳到第10行
"" 跳到光标上一次位置,非空白字符上
`` 跳到光标上一次位置,精确到列
ctrl+o 跳至更老的位置
ctrl+i 与上面对应
{ 跳至上一段落
} 跳至下一段落
J 合并当前行及下一行
nJ 连接后面的n行
H 跳至屏幕开头
M 跳至屏幕中间
L 跳至屏幕结尾
四:翻屏
Ctrl+f 往下翻一屏
Ctrl+b 往上翻一屏
Ctrl+d 往下翻半屏
Ctrl+u 往上翻半屏
Ctrl+i 向前跳到前几次光标位置
Ctrl+o 向后跳到后几次光标位置
Ctrl+e 向下翻屏
Ctrl+y 向上翻屏
zt"、"zz"和"zb" 根据光标所在的位置滚屏,把光标所在行移动窗口的顶端、中间或底部
在文件中移动,你可能会迷失自己的位置,这时使用"CTRL-G"命令,查看一下自己位置。
跳 转 到函数 、变量定义处:
[+ctrl+i 跳 转 到函数 、变量和#define
[+ctrl+d 跳 转 到#define处
五:删除单个字符
x 删除光标所在处的单个字符
#x 删除光标所在处及向后的的共#个字符
六:删除命令
d+跳转命令
d$ 删除光标所在处到行尾的所有字符
d^ 删除光标所在处到行首的所有字符
dw 删除一个单词
#dw 删除#个单词
#dl\dh 删除多个pb
dd 删除光标所在行
D 删除到行尾
#dd 删除光标所在行及后面的共#行
dt) 一直删除到这一行的)为止
di) 同上,)可以是任何符号
caw 修改一个单词
c 修改选中项
vip 选中当前行至末尾段
命令模式下(末行,相对):
startADD,endADDd 删除指定范围的连续行
.,100d 删除当前行到100行
. 表示当前行
$ 表示最后一行
+# 表示向下的
-# 表示向上 $-2 倒数倒二行
vim删除的内容不会立即被清空,可撤回。
七:粘贴命令
p(小) 复制整行,粘贴在光标所在行下方。非整行则粘贴在光标所在处后方。
P(大) 行下方,光标前方
八:复制命令
y 用法同d
yy 复制一行
vim -> 其他程序
"*y win
"+y linux
其他程序->gvim
“*p win
"+p linux
或者 ctl+v
全选
ggVG
九:修改(删除当前行,进入插入模式)
c 用法同d
cc
十:替换
r 替换单个字符
R:切换成替换模式,连续替换多个字符 ESC退出
十一:撤消
u 撤消前一次编辑操作,可连续按
#u 撤消最近的#次编辑操作
十二:重做还原(撤消之前的撤消)
ctrl+r 重做撤消的
十三:重复前一次编辑操作
. 点
十四:可视化编辑
v 光标按字符选中
V 光标按矩形选中
如何选中括号中的内容 进行:
将光标移至括号内,按shift+v进入行选模式,然后
i{ - 选小括号中内容,不包括小括号
a{ - 选小括号中内容,包括小括号
ib - 选中括号中内容,不包括括号
ab - 选中括号中内容,包括括号
i{ - 选大括号中内容,不包括大括号
a{ - 选大括号中内容,包括大括号
下面还有些相关的tips,未全部验证:
vi{ 选中{}中间的内容,不包括{}
va{ 选中{}中间内容,包括{}
vi( 选中()中间内容
vi< 选中<>中间内容
vi[ 选中[]中间内容
vit 选中中间的内容
vi” 选中”"中间内容
vi’ 选中”中间的内容
vis 选中一个句子
vib 选中一个block
viw选中一个单词
vip 选中一个段落
十五:查找
/PATTERN 正向查找
?PATTERN 反向查找
n 下一个
N 上一个
/
?配合上下左右或ctrl+p/n 查看历史记录再回车查找
q/
q? 打开新窗口显示历史记录,可编辑后回车再查找
* 查找光标所在位置的单词 (shift+*)
# 查找光标所在位置的单词
* 'incsearch'表示在你输入查找内容的同时,vim就开始对你输入的内容进行匹配,并显示匹配的位置。打开这个选项,你可以即时看到查找的结果。
* 'hlsearch'选项表示对匹配的所有项目进行高亮显示。
* 'ignorecase'选项表示在查找时忽略大小写。
全局查找/全局搜索
1. 只搜索当前文件 vim /keyword/ % | copen
2. 只搜索当前目录 vim /keyword/ * | copen
3. 搜索上级目录下,并递归 vim /keyword/ ../** | copen 比较慢
4. 可以在多个路径中搜索 vim /keyword/ path1/** path2/** | copen
精确匹配单词
如果你输入 "/the",你也可能找到 "there"。要找到以 "the" 结尾的单词,可以用:
/the\> "\>" 是一个特殊的记号,表示只匹配单词末尾。类似地,"\<" 只匹配单词的开头。
这样,要匹配一个完整的单词 "the",只需:/\<the\>
十六:查找并替换(末行模式)
startADD,endADDs/PATTERN1/PATTERN2/gi
:s/root/admin 将光标当前行中第一个出现的root替换成admin,没有就不管
:s/root/admin/g 将光标当前行中所有的替换
:3,5 s/root/admin/g 将第3行与第5主之间的所有关键字捣鬼
:% s/root/admin/gc 将所有行的替换,且询问是否替换
交换位置:
xp 交换前后两个字符的位置
ddp 上下两行的位置交换
*取消高亮
:nohl
*有彩色或无彩色
:syntax clear或:set syntax=off暂时关闭语法高亮
:syntax enable 当前缓冲区打开语法高亮功能
*查看ASCII码
光标移至某个字符,ga
*文件加密解密
: X 根据提示输入密码
: set key= 将密码设为空,也即解密
以上都要记得保存
*改变颜色配置
:colorscheme mycolors
Vim自带多种配色方案,可以根据需要自己选用。若不知道系统有哪些配色方案,可以在输入:colorscheme(空格)后用Shift+Tab键选择。
*识别中文字体
Vim在打开中文文件时都是乱码,在.vimrc中加入以下几行就可以了:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc
或
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
《LAMP兄弟连》
当前文件光标后追加内容
:r !命令(或文件)
定义快捷键(注释、取消注释)
:map CtrlVP(^p) I#<ESC>
跳至行首,插入#号,返回命令模式
:map CtrlVB(^B) 0x
删除行首第一个字符
:map^H i ajioy@hotmail.com<ESC>
ab mymail ajioy@hotmail.com
插入邮箱
连续行注释
:n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^/\/\/g
\ls 加转义符后,列出文件名没有颜色
替换
:ab mymail ajioy@hotmail.com
文件中任何位置输入mymail,空格或回车,会变成邮箱。
永久生效快捷键
用户宿主目录下配置文件~/.vimrc
/home/ajioy/.vimrc
如果是空,手动建一个
编辑模式的命令
set nu
map ^p I#<ESC>
ab mymail ajioy12
不用加冒号
《鸟哥linux》
多文档编辑
复制一个文档的内容,粘贴到另一个文档上。
案例:
vim hosts /etc/hosts #打开两个文档
:files #查看当前打开的所有文档
先在hosts文档中3yy复制3行
:n切换到另一个文档/etc/hosts下
p粘贴复制的内容
:N返回上一个文档
~/.viminfo
记录vim的操作
:set all
可查询当前的环境设定
整体预设配置文件
/etc/vimrc 不建议修改
自行设置预设
~/.vimrc
可视化编辑
visual mode
ctrl+v
hjkl选择
复制y
粘贴p
默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,看上去又乱又讨人厌。怎么让Vim不自动生成这些备份文件呢?
1. 找到你的Vim安装目录,如果是在Windows下默认路径安装的,应该是在C:\Program Files\Vim\
2. 找到这个文件:vimrc_example.vim ,我的这个文件是在vim70文件夹下,具体还要看你安装的是什么版本的。
3. 找到后打开,找到这一句:if has("vms") 把这个判断里的if部分保留,else部分注释掉。(Vim的注释符是")即修改后应该是这样的: if has("vms") set nobackup " do not keep a backup file, use versions instead " else " set backup " keep a backup file
4. 保存。
宏录制
每一行的最前面有一个逗号,现在如果需要将每行前面的逗号去掉,怎么办?
在第一行行首按x,然后按j,然后按x...这样重复下去?但如果这个文件有100行要这样修改呢?或者1000行?
所谓宏,在vim里面是指某种特定顺序的一系列操作,我们可以录制自己的操作序列,然后重复这个序列多次,以简化某种重复的操作。vim宏有录制和播放的过程,录制就是你教给vim该怎么操作,播放就是vim照着你教的进行自动操作。因此,对于上面的文件处理,首先要进行宏录制:
1.把光标定位在第一行;
2.在normal模式下输入qa(当然也可以输入qb, qc, etc,这里的a, b, c是指寄存器名称,vim会把录制好的宏放在这个寄存器中)(PS:如果不知道什么是vim的寄存器,请自行放狗搜之);
3.正常情况下,vim的命令行会显示“开始录制”的字样,这时候,把光标定位到第一个字符(按0或者|),再按x删除,按j跳到下一行;
4.normal模式下输入q,结束宏录制。
好了,经过以上步骤,我们定义了一个存储在寄存器a中的宏,它的操作序列是:0->x->j,也就是跳到行首,删除,跳到下一行。
现在,第一行已经删除了行首的逗号,而且光标也已经在第二行,现在,在normal模式下输入@a,以播放我们刚录制好的存在寄存器a中的宏。于是,第二行行首的逗号也被删除,光标停在了第三行。
这也不简单啊?你肯定会这样想,要删除100行,我还得输入100个@a,我还不如手动删除呢。呵呵,vim早就想到了,输入100@a,好了,剩下的7行全部搞定了。(PS:在命令前面加数字,就是代表要执行这个命令多少次)
修改宏
当你发现存在某个寄存器的命令宏是错误的,你除了可以重新写一遍命令宏之外,还有如下修改方式:
1、先用G(大写)到文件末尾,然后用o(小写)新加一行,不要编辑,用ESC退出到普通模式,其实就是为编辑宏找了个地方。
2、使用命令"ap会看到寄存器a中的命令宏像文本一样出现在这一行,然后编辑这一行。编辑的时候与vim编辑其他的文件一样。编辑结束后用0(零)回到行首。
3、然后用"ay$将正确内容写到寄存器a中,最后删除这一行即可。
4、当你需要向命令宏寄存器中增加内容时,可以用命令qA来向a寄存器增加内容,之后输入你想增加的内容,再使用q结束。
保存和传递宏
1 先建立一个宏。如上
2 在任意一个文件的空白位置normal状态下,命令"ap 即可以把宏的内容显示出来。比如说我的宏是:
"ohello th id<80>kb<80>kb<80>kbis is a a<80>kba<80>kbmaco of vim.^["
3 这段内容保存或传递。
4 使用命令:let @a="ohello th id<80>kb<80>kb<80>kbis is a a<80>kba<80>kbmaco of vim.^["
或者参考修改宏的第三步。
5 其他人用@a命令就可以使用你制作的宏了。
设置TAB为四个空格
~/.vimrc下添加以下
:set ts=4
:set expandtab
:%retab!
显示制表符和换行符
:set list TAB
取消:set nolist
快速对引号或括号等标点内的内容进行选中、删除、复制操作
ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容
另外如果把上面的i改成a可以连配对标点一起操作。
举个例子:
比如要操作的文本如下:
111"222"333
将光标移到"222"的任何一个字符处输入命令 di" ,文本会变成: 111""333
若输入命令 da" ,文本会变成: 111333
from 酷壳
缩进相关
【>>】向右给它进当前行 【<<】向左缩进当前行
【=】 – 缩进当前行 (和上面不一样的是,它会对齐缩进)
【=%】 – 把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
【G=gg】 或是 【gg=G】 – 缩进整个文件(G是到文件结尾,gg是到文件开头)
字符相关
【guu 】 – 把一行的文字变成全小写。或是【Vu】
【gUU】 – 把一行的文件变成全大写。或是【VU】
按【v】键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写
【ga】 – 查看光标处字符的ascii码
【g8】 – 查看光标处字符的utf-8编码
【gf】 – 打开光标处所指的文件 (这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
【*】或【#】在当前文件中搜索当前光标的单词
关键字补全
我们还是坚持不用任何插件。我们来看看是怎么个自动补全的。
在insert模式下,我们可以按如下快捷键:
【Ctrl +N】 – 当你按下这它时,你会发现Vim就开始搜索你这个目录下的代码,搜索完成了就会出现一个下拉列表(居然是粉紫色的,真是丑死了)
下图是我输入了ngx_http_然后按ctrl+n出现的样子,它已经帮我补全了一个,但是我不想要这个。然后,在Vim的下方我们可以看到状态变成了“关键字补全”,然后后面有^N^P的提示,意思就是告诉你还有一个Ctrl+P.
【Ctrl + P】 – 接下来你可以按这个键,于是回到原点,然后你可以按上下光标键来选择相应的Word。
对于上面那个例子,我们按下了Ctrl+P后出现下面的这个样子。我们可以看到,光标回到了一开始我输入的位置,然后你可以干两件事,一个是继续输入(这可以帮助过滤关键词),另一个是用“光标键”上移或下移来选择下拉列表中的关键字,选好后回车,就补全了。
与此类似的,还有更多的补齐,都在Ctrl +X下面:
-
Ctrl + X 和 Ctrl + D 宏定义补齐
-
Ctrl + X 和 Ctrl + ] 是Tag 补齐
-
Ctrl + X 和 Ctrl + F 是文件名 补齐
-
Ctrl + X 和 Ctrl + I 也是关键词补齐,但是关键后会有个文件名,告诉你这个关键词在哪个文件中
-
Ctrl + X 和 Ctrl +V 是表达式补齐
-
Ctrl + X 和 Ctrl +L 这可以对整个行补齐,变态吧。
#在vim下对比两个文件,原来打开了fnpro.c,现在和fnpro.c.bak对比
#垂直分割
:vert diffsplit fnpro.c.bak
#水平分割
:diffsplit fnpro.c.bak
#跳到下一个不同之处
:]c
#跳到上一个不同之处
:[c
#展开折叠:zo
#折叠:zc
#不论何种情况下-o都可以上一次跳转的地方
#查看变量和函数的申明
[i
#以下为查看vim环境参数makeprg的值的例子:
:set makeprg?
#重新对文件代码进行缩进
gg=G
如果已经使用了ctags 或是cscope创建索引文件的话 那看代码时很是方便
跳转到函数、变量定义处:
[+ctrl+i 跳转到函数、变量和#define
[+ctrl+d 跳转到#define处
ctrl+i 向前跳到前几次光标位置
ctrl+o 向后跳到后几次光标位置
函数体跳转:
[[
]]
[]
][
{}
VIM中GDB调试,类似IDE的逐行调试
https://blog.easwy.com/archives/advanced-vim-skills-vim-gdb-vimgdb/
cscope使用
https://blog.easwy.com/archives/advanced-vim-skills-cscope/
保存项目相关配置linux
https://blog.easwy.com/archives/advanced-vim-skills-save-project-configuration/
文本对象(Text Objects)
在Vim中,相比针对单个字符进行操作,对于单词、句子和段落等更大范围的文本对象(text-objects )执行命令则更有效率。Vim的命令结构示例如下:
[number]<command>[text object or motion]
其中:number是指命令作用在几个文本对象之上。比如3个单词;command是指执行的具体命令。比如删除或复制;text object or motion是指具体的文本对象。比如单词、句子或段落。
文本对象的类型
-
iw …inner word
-
aw …a word
-
iW …inner WORD
-
aW …a WORD
-
is …inner sentence
-
as …a sentence
-
ip …inner paragraph
-
ap …a paragraph
-
it …inner tag
-
at …a tag
-
i( or i) …inner block
-
a( or a) …a block
-
i< or i> …inner block
-
a< or a> …a block
-
i{ or i} …inner block
-
a{ or a} …a block
-
i[ or i] …inner block
-
a[ or a] …a block
-
i" …inner block
-
a" …a block
-
i` …inner block
-
a` …a block
文本对象的作用范围
iw表示inner word。如果键入viw命令,那么首先v将进入选择模式,然后iw将选中当前单词。
aw表示a word,它不但会选中当前单词,还会包含当前单词之后的空格。
以下实例中的红色 [ ] 表示作用范围:
iw | This is a [test] sentence. |
aw | This is a [test ]sentence. |
iW | This is a […test…] sentence. |
aW | This is a […test… ]sentence. |
is | …sentence. [This is a sentence.] This… |
as | …sentence. [This is a sentence. ]This… |
ip | End of previous paragraph.
[This is a paragraph. It has two sentences.]
The next. |
ap | End of previous paragraph.
[This is a paragraph. It has two sentences.
]The next. |
i( or i) | 1 * ([2 + 3]) |
a( or a) | 1 * [(2 + 3)] |
i< or i> | The <[tag]> |
a< or i> | The [<tag>] |
i{ or i} | some {[ code block ]} |
a{ or a} | some [{ code block }] |
i[ or i] | some [[ code block ]] |
a[ or a] | some [[ code block ]] |
i" | The "[best]" |
a" | The[ “best”] |
i` | The `[best]` |
a` | The[ `best`] |
文本对象的应用实例
使用ci)命令,可以删除括号内的所有内容,但保留括号本身。而ca)命令,则可以删除括号内的所有内容,以及括号本身。
在某个开括号上,点击%键,光标将可以自动移动到相对应的闭括号上。通过与编辑命令组合,c%可以实现与ca)相同的功能。使用%命令,必须将光标放在括号之上;而使用a)命令,则光标可以在括号之上或括号内的任何位置。而且%命令,也是无法实现用i)命令效果的。
使用cit命令,你甚至不用将光标移动到Tag之内,就可以快速修改其中的内容。
使用ci"命令,可以快速修改当前行内第一个双引号其中的内容。
使用ci'命令,可以快速修改当前行内第一个单引号其中的内容。
1. 折叠方式
可用选项来设定折叠方式:
可在Vim 配置文件中设置 set fdm=XXX
可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */
有6种方法来选定折叠:
1 2 3 4 5 6 | manual 手工定义折叠 indent 更多的缩进表示更高级别的折叠 expr 用表达式来定义折叠 syntax 用语法高亮来定义折叠 diff 对没有更改的文本进行折叠 marker 对文中的标志折叠 |
注意,每一种折叠方式不兼容,如不能既用expr又用marker方式,我主要轮流使用indent和marker方式进行折叠。
使用时,用 set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。
要使每次打开vim时折叠都生效,则在.vimrc文件中添加设置,如添加:set fdm=syntax,就像添加其它的初始化设置一样。
2. 折叠命令
选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用indent和marker稍微多一些,故以它们的使用为例:如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
在可折叠处(大括号中间):
1 2 3 4 5 6 7 8 | zc 折叠 zC 对所在范围内所有嵌套的折叠点进行折叠 zo 展开折叠 zO 对所在范围内所有嵌套的折叠点展开 [z 到当前打开的折叠的开始处。 ]z 到当前打开的折叠的末尾处。 zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。 zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。 |
当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动
我们可以使用下面的命令来创建和删除折叠:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | zf 创建折叠,比如在marker方式下: zf56G,创建从当前行起到56行的代码折叠; 10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。 10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。 在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd 删除 (delete) 在光标下的折叠。 仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zD 循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。 仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE 除去 (Eliminate) 窗口里“所有”的折叠。 仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。 |
查询插件加载时间:
vim test.py --startuptime output.log,然后查看output.log,看哪些脚本加载的时间长,可以删掉一些不大用得上的。
Buffer相关操作
关闭当前Buffer(不会删除它)
:bdelete
:bd
:bdelete 3(关闭编号为3的)
关闭除当前外的所有Buffer
<leader>bdo
"关闭buffers除了当前编辑的外
command! BcloseOthers call <SID>BufCloseOthers()
function! <SID>BufCloseOthers()
let l:currentBufNum = bufnr("%")
let l:alternateBufNum = bufnr("#")
for i in range(1,bufnr("$"))
if buflisted(i)
if i!=l:currentBufNum
execute("bdelete ".i)
endif
endif
endfor
endfunction
map <leader>bdo :BcloseOthers<cr>
删除一个缓冲区
:bwipe (buffer wipe).
显示当前Buffer
:ls
:buffers
快速跳至其他Buffer
:buffer No. (缓存区号,1\2\3...)
https://blog.youkuaiyun.com/FuDesign2008/article/details/7295138