VIM知识汇总

《运维之道》

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.csdn.net/FuDesign2008/article/details/7295138

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值