vim技巧
(三)多窗口操作
改变宽度:vertical res +n(增加n列的宽度)n ctrl w >/<
(一)缩进
vim提供4种缩排,:set indenttype。indenttyep可为autoindent、smartindent、cindent、indentexpr。其中,autoindent与vi的autoindent类似,smartindent则是对其做了点加强,可识别基础C语法,如下:
a、在{后的下一行
b、以cinwords选项中包含的关键字开始的行
c、以}结尾的新行
d、光标在含}的行上,用大写字母O命令,可向上创建新的一行,自动缩排
cindent和indentexpr比较适合C程序员。cindent定义了一般C代码里需要的缩排,而indentexpr则威力更强,更灵活,可随意定义自己的缩排风格。cindent的动作由三个选项定义:
1、cinkeys,定义了一些键盘按键组合,vim遇到它们时会重新估算当前行的缩排,选项里面的值用逗号分隔:如0{,0},0),:,0#,!^F,o,O,e,其中0x表示一行的开头是字符x是,重新估算当前缩排,对于0#,它的缩排距离与前一个#开头的行相同,#define就很方便了;对于冒号,若:是段标签或case语句,则重新估算缩排。!x表示,当按下x键时,重新估算当前行缩排,注意是插入模式下的按键,默认是CTRL+F;o表示当创建任意行时,估算新建行的缩排,无论是插入模式的回车还是命令模式的o命令;O表示在当前行之上创建的新行;e就是else,直到else的最后一个e之前,vim不会识别这种情况。
此外,cinkeys还有个专用关键字,如=word和=~word,一旦新行中出现匹配字串word,重新估算缩排,=~word与=word相反,即不出现它的话,估算缩排,且忽略大小写。
2、cinwords,定义了一些关键字,输入这些关键字时,下一行将触发额外的缩排,其默认值是:if,else,while,do,for,switch。这些关键字要分大小写的。
3、cinoptions,这个选项控制vim在C的上下文中重新缩排文本行的行为。:set cinoptions=选项值,它的选项值比较多,下面列举一些常用的。
fn,{n,设置方式为:set cinoptions=fn,{n,fn是定义了非嵌套的花括号"{"的缩排距离,默认是0,{与f的行为同,只是它套用到嵌套的开始花括号"{",默认也是0。
}n,定义结尾的花括号"}"的偏移量,默认为0。
:n,=n,bn,这三个控制case语句的缩排,:n使得vim将case的标签缩排n个字符(从对应的switch语句开始计算),默认是一个shiftwidth,=n是的case下的行相对于case的缩排,默认是shiftwidth,bn定义了break语句的位置,默认是0,即与相应的case对齐。
)n,*n,这2个设置扫描行数,)n设定vim寻找非结尾括号的行数,默认是20,*n是设置寻找为结束的注释扫描行,默认是30。
cinoptions已经有比较全的默认值了,基本不用我们修改。
总结:cinkeys和cinwords定义了触发vim重新估算缩排的键和动作,vim则是根据cinoption里的设定来进行或重新进行缩排
indentexpr的设置回覆盖cindent。目录$VIMRUNTIME/indent下,有很多编程语言对应的缩排格式文件,在.vimrc文件中载入它们便可用了。关闭缩排的命令式:filetype indent off
(二)折叠
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 折叠 za 切换折叠和非折叠
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" 时有效。 zr/R 打开
zm/M 关闭
|
vim技巧的更多相关文章
- vimcommandfilepatchcmdfold VIM技巧之分隔窗口 一级精华
VIM技巧之分隔窗口 分类: 技术2010-07-08 09:57 754人阅读 评论(1) 收藏 举报 同时显示两个不同的文件, 或者同时查看同一个文件的两个不同位置, 或者是同步显示两个文件的 ...
- VIM技巧(2)-删除匹配行
VIM技巧(2)-删除匹配行 代码如下: * @Company:中国股份有限公司 * @author ymzhao (也有zyyang的) * @Date: Jan 22, 2014 11:25:29 ...
- VIM技巧(1)
VIM技巧(1) 替换 36s/^\(.* = \)entity.\(.*\)$/\1this.GetShowName("\2",\2); 删除空行 %g/^$/d %g/^\s* ...
- 最佳vim技巧
最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim ...
- vim技巧:折叠快捷键
vim技巧:折叠快捷键 以前用的挺熟的,一段时间不用了,快捷键又忘了,不得不重新再看手册,今天专门整理一下,以后查找起来也比较方便. zc 折叠,只折叠最外层的折叠zC 对所在范围内所有嵌套的折叠点进 ...
- vim技巧4 删除/保留文本中匹配行
vim技巧:如何删除/保留文本中特定的行呢? <ol><a href="/ss/ss/www"> show invisibles</a> < ...
- Vim技巧之四大模式_普通模式
Vim技巧之四大模式_普通模式 一见不钟情的普通模式 普通模式以下的强悍操作 什么是操作符 什么是动作命令 误操作怎么办 那种操作更划算 普通模式下的神奇大招 Vim技巧之四大模式_普通模式 众所周知 ...
- Vim技巧之四大模式_插入模式
Vim技巧之四大模式_插入模式 在插入模式中及时更正错误 插入-普通模式 在插入模式模式以下直接粘贴指定寄存器的内容 插入模式中做运算 用字符编码插入很常使用字符 替换已有的文本 Vim技巧之四大模式 ...
- vim技巧2
vim技巧总结-查找 1.查找命令1.1 执行一次查找普通模式下,/会调用查找提示符,如果vim扫描到文档尾部仍没有找到目标,会提示"search hit BOTTOM, continuin ...
- 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)
会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...
随机推荐
- Yeelink 初探
Yeelink可以作为中转服务器使用,在自己没有服务器的情况下,可以利用它传输自己的数据. 首先去申请一个帐号,然后添加一个设备. http://www.yeelink.net/user 在这里是用户 ...
- FPGA芯片内部硬件介绍
FPGA芯片内部硬件介绍 FPGA(Filed programmable gate device):现场可编程逻辑器件 FPGA基于查找表加触发器的结构,采用SRAM工艺,也有采用flash或者反熔丝 ...
- URL类
java.net.URL类是对统一资源定位符(如http://www.lolcats.com)的抽象.它扩展了java.lang.Object,是一个final类.它采用策略模式,协议处理器(prot ...
- js版弹力球实例
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>弹 ...
- UI: 概述, 启动屏幕, 屏幕方向
UI 设计概述 启动屏幕(闪屏) 屏幕方向 示例1.UI 设计概述UI/Summary.xaml <Page x:Class="Windows10.UI.Summary" x ...
- mui日期插件$, each遍历,EventListener事件监听,json格式
(function($) { $.init(); var result = $('#result')[0]; var btns = $('.btn'); btns.each(function(i, b ...
- log4j配置文件加载
log4j的jar包内部包含preference默认配置,使用者可以通过log4j.xml或log4j.properties来指定自己的配置.xml比properties优先.另外注意java读取pr ...
- Palindrome Index
传送门: Palindrome Index Problem Statement You are given a string of lower case letters. Your task is t ...
- maven的eclise配置
http://blog.csdn.net/guanning0109/article/details/26069277
- Java程序员
从生存.制胜.发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像.本书中既有在公司中的生存技巧,又有高手达人的进阶策略,既有求职攻略的按图索骥,又有入职后生产环境的破解揭秘. 书中浓缩了 ...