一、VIM设置代码折叠

×××××××××××××××××

今天看了一下别人写的程序的源代码,发现是用vim写的,代码中有趣是用vim来折叠代码,一开始我以为是用插件的,后来

上网查了查,得出以下使用方面的技巧。

1. 折叠方式

可用选项来设定折叠方式:

可在Vim 配置文件中设置 set fdm=XXX

可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */

有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会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。

在可折叠处(大括号中间):

zc      折叠

zC     对所在范围内所有嵌套的折叠点进行折叠

zo      展开折叠

zO     对所在范围内所有嵌套的折叠点展开

[z       到当前打开的折叠的开始处。

]z       到当前打开的折叠的末尾处。

zj       向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。

zk      向上移动到前一折叠的结束处。关闭的折叠也被计入。

当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动

3.创建和删除折叠

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调整分割窗口的高度和宽度

×××××××××××××××××

1.调整宽度

vim多窗口有时候需要调整默认的窗口宽度和高度,可以用如下命令配合使用

CTRL-W =        使得所有窗口 (几乎) 等宽、等高,但当前窗口使用 'winheight' 和 'winwidth'。

:res[ize] -N

CTRL-W -        使得当前窗口高度减 N (默认值是 1)。如果在 'vertical' 之后使用,则使得宽度减 N。

:res[ize] +N

CTRL-W +        使得当前窗口高度加 N (默认值是 1)。如果在 'vertical' 之后使用,则使得宽度加 N。

:res[ize] [N]

CTRL-W CTRL-_

CTRL-W _        设置当前窗口的高度为 N (默认值为最大可能高度)。

:vertical res[ize] [N]

CTRL-W |        设置当前窗口的宽度为 N (默认值为最大可能宽度)。

z{nr}       设置当前窗口的高度为 {nr}。

CTRL-W

CTRL-W >        使得当前窗口宽度加 N (默认值是 1)。

2.整个窗口的移动

CTRL-W-H 将窗口移到最左边

CTRL-W-L 将窗口移到最右边

CTRL-W-J 将窗口移到底端

CTRL-W-K 将窗口移到顶端

三、VIM窗口跳转

vim中在分割的多个窗口间跳转的最简单方法,就是借助CTRL+w组合命令和vim中的上下左右快捷建(h,j,k,l)

CTRL+w+h :转到当前窗口的左侧窗口

CTRL+w+j :转到当前窗口的下侧窗口

CTRL+w+k :转到当前窗口的上侧窗口

CTRL+w+l :转到当前窗口的右侧窗口

CTRL+w+w :多个窗口间快捷跳转

四、VIM居中编辑行

×××××××××××××××××

我们编辑文件时,文件长了之后可编辑行一直是在窗口最下面,  要移动到窗口中间可以同过

'zz'快捷键。

另外可以设置vim 的下面选项

'scrolloff'/ 'so'

#总在中间

:se so=999

#下面总有3行

:se so=3

五、VIM中浏览目录

1.浏览目录

浏览目录的命令很简单:(你也可以直接vim一个目录)

:Ex 浏览目录,会在当前窗口打开并显示目录

这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:

【-】 到上级目录

【D】删除文件(大写)

【R】改文件名(大写)

【s】对文件排序(小写)

【x】执行文件(小写)

当然,打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件。

如果你要改变当前浏览的目录,或是查看当前浏览的目录,你可以使用和shell一样的命令:

:cd

:pwd - 查看当前目录

2.窗口分屏浏览

相信你在《Vim的窗口分屏》一文中,你已经知道了怎么拆分窗口了。其实,我更多的不是用拆分窗口的命令,而是用浏览文件的命令来分隔窗口。如:

:Hex   全称为 :Hexplore

把当前窗口上下分屏,并在下面进行目录浏览;

:He!

如果你要在上面,你就在 :He后面加个 !;

:Ve 全称为 :Vexplore 。

如果你要左右分屏的话,你可以这样;

3.分屏同步移动

要让两个分屏中的文件同步移动,很简单,你需要到需要同步移动的两个屏中都输入如下命令(相当于使用“铁锁连环”):

:set scb

如果你需要解开,那么就输入下面的命令:

:set scb!

注:set scb 是 set scrollbind 的简写。

linux的vim中乘号,vim 技巧 - fly_lixiaolong的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. linux vi刷新页面,vim的神级配置 - bubifengyun的个人页面 - OSCHINA - 中文开源技术交流社区...

    有传言:vim是编辑器之神,(xxx)是神之编辑器.意思就是说vim是编辑器中最好的,而一般的大神级别的人都是使用(xxx)这个编辑器.咱不是神人,就使用vim吧.该配置是从别处搞来的,并作了部分修改 ...

  2. 黑白球JAVA_桶中取黑白球 - jiacut的个人页面 - OSCHINA - 中文开源技术交流社区

    题目 有一个桶,里面有白球.黑球各100个,现在按下述规则取球: 每次从桶里面拿出来两个球: 如果是两个同色的球,就再放入一个黑球: 如果是两个异色的球,就再放入一个白球. 问:最后桶里面只剩下一个黑 ...

  3. linux如何敲打中文,vim敲字如弹琴 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...

    导读 本篇文章主要讲解vim的常用命令,当你在妹子面前像弹琴一样的敲代码完成给她的惊喜的时候,萌妹子会不会对你顶礼膜拜,发出崇拜的小星星呢? 1.显示行数 vim打开文件之后输入 :set numbe ...

  4. 对linux的mv命令设计测试用例,测试用例中的细节 - 八音弦的个人空间 - OSCHINA - 中文开源技术交流社区...

    编写测试用例是在实际测试执行开始之前进行的软件测试活动的重要组成部分.因此,在编写测试用例时必须头脑清晰地理解需求.测试执行阶段的顺利程度主要取决于测试用例的编写质量,还取决于对需求的理解程度.理论上 ...

  5. linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区

    概述 函数名: fflush 功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件 头文件: #include 原型:int fflush(FILE *stream) #include # ...

  6. 重定向linux编译,linux重定向 - 悟性的个人页面 - OSCHINA - 中文开源技术交流社区...

    linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出. 在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号.例如 ...

  7. linux修改组群名字,Linux用户和组 - 回忆斑斑驳驳的个人空间 - OSCHINA - 中文开源技术交流社区...

    用户相关操作: 1)         su 用户:切换用户但不切目录 2)         su – 用户:切换用户并切换目录 3)         sudo:允许系统管理员让普通用户执行一些或者全部 ...

  8. mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...

  9. linux命令eric,linux命令杂记 - erichd的个人页面 - OSCHINA - 中文开源技术交流社区

    查找最近24小时内修改过的文件 find / -type f -mtime 0 将nginx日志输出成html报表 goaccess -f access.log-20151201 -a > /r ...

最新文章

  1. 广度深度都要,亚马逊是如何推动 Alexa 内生成长的?
  2. 人对光波的三种特性_花友小叶投稿:养花一年了,三种绿植基本不用管,没光也不怕...
  3. 团队-科学计算器-成员简介及分工
  4. gitHub使用记录
  5. jdbc链接oracle报错ORA-12505解决办法
  6. 三十八、Vue项目上手 | 用户管理系统(上篇)
  7. LC3视角:Kubernetes下日志采集、存储与处理技术实践
  8. Java基础知识强化53:经典排序之选择排序(SelectionSort)
  9. WebApp 开发中常用的代码片段
  10. mysql pk_mysql_1
  11. java8函数式编程闭包_java8入门必备—函数式编程思维——函数式语言向语言和运行时让渡控制权的途径——迭代让位于高阶函数、闭包...
  12. android 画布清屏,html5清空画布方法(三种)
  13. C# 使用正则表达式提取文字
  14. 在IE浏览器里打开谷歌
  15. WIN10打印机显示服务器脱机,win10网络打印机显示脱机处理方法
  16. 计算机开机界面图片怎么修改,Win10系统怎样更改电脑开机密码页面的图片
  17. rtl8723du在am335x linux-4.19.94上的移植
  18. 证书遗失补办、换证流程,这几样资料1个都不能少
  19. 【科技秀】symbian虽然是最差的系统,但却有很多优秀软件其余系统不具备,想玩怎么办?模拟器又来了
  20. 微信小程序使用mqtt接收和发布信息有时候接收和发送不到的问题

热门文章

  1. 让你的创业失败的18个昏招
  2. NTL库之LLL,BKZ约化算法
  3. 蓝桥杯算法特训 | 数学知识的运用 |未完待续
  4. 表格锁定头和列中间内容展示
  5. SQL必知必会学习笔记4-Kane
  6. 深度卷积神经网络是什么,卷积神经网络的深度
  7. 基础 | 详解3D结构光如何标定
  8. 常见的社群玩法盘点,你做的是哪一种?
  9. Oracle的SGA与系统vm.nr_hugepages
  10. 2016计算机微课作品,Office 2016电脑办公基础教程(微课版)