source:
http://easwy.com/blog/archives/advanced-vim-skills-catalog/
gain:
#########20090309########
在vim中保存与回复上次的编辑状态
这里,

1)会话信息中保存了所有窗口的视图,外加全局设置。
2)viminfo信息中保存了命令行历史(history)、搜索字符串历史(search)、输入行历史、非空的寄存器内容(register)、文件的位置标记(mark)、最近搜索/替换的模式、缓冲区列表、全局变量等信息。

假设vim打开了三个窗口, vsplit, split,split。然后 n f1,n f2, n f3
打开这些文件之后,想要下次启动vim的时候保持现在这个状态,不用一个一个重新载入了,一个比较笨
的方法,例如如下步骤:
一、保存会话与状态
: cd src                            "切换到/home/easwy/src/vim70/src目录
: set sessionoptions-=curdir        "在session option中去掉curdir
:set sessionoptions+=sesdir        "在session option中加入sesdir
: mksession vim70.vim               "创建一个会话文件
: wviminfo vim70.viminfo            "创建一个viminfo文件
:qa                                "退出vim
二、恢复会话与状态
下次启动的时候,任意vi f1,然后
: source ~/src/vim70/src/vim70.vim  '载入会话文件
: rviminfo vim70.viminfo            '读入viminfo文件
#########20090310#############
small skills:
1.文件的定位:
光标定位到src/main.c文件第22行的”fcntl.h”单词上,然后在Normal模式下按” gf“。咦,vim打开了/usr/include/fcntl.h文件!
现在我们按” CTRL-^“回到刚才的位置,光标仍旧定位在第22行的”fcntl.h”单词上,然后按” CTRL-W f“。啊哈,这次vim打开了一个水平分隔窗口,在此窗口中打开了/usr/include/fcntl.h。
2.更新.vimrc 显示:
更改完了.vimrc之后执行:":source ~/.vimrc"就会更新成为.vimrc的显示了,不用重启。
3.昨天(20090309)的会话文件,如果":source  vim70.vim"之后,系统会自动寻找并执行文件名为会话文件名去掉后缀(不一定非得是.vim)再加'x.vim'的文件中的内容。例如:这里将再 执行vim70x.vim(有的话)的内容(如"set nu"等)。
3.使用tag标签定位某个函数等
1)进入项目目录,输入:
$ ctags –R ./
这样可以生成当前目录文件的tag文件。
(再进入相应目录,vim中": set tags=tags" "设置tags选项为当前目录下的tags文件 )
2)使用tags:打开当前目录的某个文件,例如hello.h中有一个printHello()函数,那么:
光标定位到printHello位置,输入:
CTRL-]                  "跳转到当前光标下的标签,这样将跳到hello.c文件并定位到printHello函数的定义处
CTRL-T                  "跳到标签栈中较早的标签,相当于“后退”的功能,退回到hello.h文件处
另外:
:tag {ident}            "跳转到指定的标签,例如": tag main"将跳到main函数的定义之处。
:tags                   "显示标签栈
###########20090311#######
1,vim文件浏览
在vim 7.0以前,文件浏览功能由explorer.vim插件提供,在vim 7.0中,这个插件被netrw.vim插件所代替。

netrw.vim是vim的标准插件,它已经伴随vim而发行,不需要安装。

我们现在试一下vim文件功能,当你使用vim尝试打开目录时,vim会自动调用netrw.vim插件打开该目录(从操作系统的视角来看,目录其实是一种特殊的文件)。例如,我们在vim中执行命令”:e ~/src

这个窗口类似于文件管理器,你可以创建、删除、改名文件或目录;在目录上按回车时,会进入该目录;在文件上按回车时,会使用vim打开该文件;可以更改排序方式、排序风格;隐藏目录或文件(使之不在上述窗口中显示)等等。

<F1>        显示帮助<cr>        如果光标下为目录,则进入该目录;如果光标下是文件,则用vim打开该文件-           返回上级目录c           切换vim的当前工作目录为正在浏览的目录d           创建目录D           删除文件或目录i           切换显示方式R           改名文件或目录s           选择排序方式x           定制浏览方式,使用你指定的程序打开该文件 
2、输入“:Sexplore!”会令垂直打开一个窗口显示当前文件所在目录(没有感叹号则水平)类似:
:vnew(在新窗口创建文件),:vsplit xxx(要打开的文件名),:split xxx(要打开的文件名)这里文件都可以是目录。
3、输入“:ls”显示当前缓冲区中得文件,按N ctrl^或者“:buffer N”可以切换成第N个缓冲
##########20090312############
1,quickfixQuickfix模式的主要思想是保存一个位置列表,然后提供一系列命令,实现在这个位置列表中跳转。对大多数使用Makefile的项目来说,vim的缺省设置”make“已经可以满足要求了。如果你的项目需要用一个特殊的程序进行编译,就需要修改’makeprg‘选项的值。例如对于hello.c,设置执行make时的命令,注意需要空格转义,
":set makeprg=gcc/ -Wall/ -ohello/ hello.c ",设置之后执行":make",就可以编译了。vim会自
动调用’makeprg‘选项定义的命令进行编译,并把编译输出重定向到一个临时文件中,当编译出现错误时,
vim会从上述临时文件中读出错误信息,根据这些信息形成quickfix列表,并跳转到第一个错误出现的地方。
可以输入”:cc“命令,vim会更次显示此信息,或者干脆使用”:cw“命令,打开一个quickfix窗口,
把所有的出错信息显示出来。
在quickfix模式里经常用到的命令有: 
:cc                显示详细错误信息 ( :help :cc ):cp                跳到上一个错误 ( :help :cp ):cn                跳到下一个错误 ( :help :cn )或者在Quickfix List对应行上输入回车:cl                列出所有错误 ( :help :cl ):cw                如果有错误列表,则打开quickfix窗口 ( :help :cw ):col               到前一个旧的错误列表 ( :help :col ):cnew              到后一个较新的错误列表 ( :help :cnew ) 
更多的命令,以及这些命令更详细的解释,请参见手册。 
如果你希望跳转到出错的文件时,使用一个分隔的窗口打开,请参阅’switchbuf‘选项的值
2、关于自动补全:
除智能补全外,最常用的补全方式应该是CTRL-N和CTRL-P补全了。它们会在当前缓冲区、其它缓冲区,以及
当前文件所包含的头文件中查找以光标前关键字开始的单词。智能补全不能对局部变量进行补全,而CTRL-N和
CTRL-P补全则可以很好的胜任。 例子,输出字符”pa”,然后按CTRL-P,vim会在下拉菜单中列出所有的匹
配功能供选择,此时再按一下CTRL-P,就选中了第一个项目,也就是我想输入的”parmp”。我们第一次输入
CTRL-P的是进行补全,第二次输入的CTRL-P是在下拉菜单中向上选择,二者的含义是不同的。 我们知道,
CTRL-P一般的含义是向上,因此CTRL-P补全是向上查找以进行补全,而CTRL-N是向下查找以进行补全,在不
同场合使用不同的快捷键可以加速补全的速度。使用CTRL-N和CTRL-P补全时,由’complete‘选项控制vim
从哪些地方查找补全的内容。例如,对于比较大的软件项目,文件包含关系复杂,如果CTRL-N和CTRL-P补全
时查找所包含的头文件,耗时会比较久。此时,可以在’complete‘选项中去掉’i‘标记,这样CTRL-N和
CTRL-P补全就不在头文件中查找了,速度会快很多;当然,弊端就是你无法对头文件中出现的某些内容进行补
全了。vim中其它的补全方式包括: 
 
整行补全                        CTRL-X CTRL-L根据当前文件里关键字补全        CTRL-X CTRL-N根据字典补全                    CTRL-X CTRL-K根据同义词字典补全              CTRL-X CTRL-T根据头文件内关键字补全          CTRL-X CTRL-I根据标签补全                    CTRL-X CTRL-]补全文件名                      CTRL-X CTRL-F补全宏定义                      CTRL-X CTRL-D补全vim命令                     CTRL-X CTRL-V用户自定义补全方式              CTRL-X CTRL-U拼写建议                        CTRL-X CTRL-S 
例如,当我们按下”CTRL-X CTRL-F“时,vim就会弹出下拉菜单,显示出当前目录下的可选目录和文件。
############20090314###############
移动:
1,上下左右移动窗口位置的命令,是CTRL-W H/J/K/L (:help CTRL-W_H, …)。注意,这里的H, J, K, L是大写的
2,在vim中翻页,同样可以使用PageUp和PageDown,我们通常使用CTRL-BCTRL-F来进行翻页,CTRL-B
CTRL-F前也可以加上数字,来表示向上或向下翻多少页
3,跳转:命令“gg”移动到文件的第一行,而命令“G”则移动到文件的最后一行。 跳转到文件的第1234行,只需输入
1234G”或者“:1234”
还可以按百分比来跳转,例如,想跳到文件的正中间,输入“50%”;如果想跳到75%处,输入“75%”
迷失自己的位置,这时使用“CTRL-G”命令,查看一下自己位置以及文件等。
4,行内快速移动,可以使用f, t, F, T命令.例如,"fx",会把移动到光标右边的第一个'x'字符上。"F"
令则反方向查找,也就是移动到光标左边的指定字符上,"tx"会移动到光标右边第一个'x'字符的前面。"T"
令是"t"命令的反向版本,它移动到光标右边的指定字符之后,可以在命令前面使用数字,"3fx"表示移动到光
标右边的第3个'x'字符上.";"命令重复前一次输入的f, t, F, T命令,而","命令会反方向重复前一次输入
的f, t, F, T命令。这两个命令前也可以使用数字来表示倍数。
在vim中,移动到行首的命令非常简单,就是"0",这个是数字0,而不是大写字母O。移动到行尾的命令是"$"

另外还有一个命令"^",用它可以移动到行首的第一个非空白字符。

使用H/M/L这三个键,可以让光标跳到当前窗口的顶部、中间、和底部,停留在第一个非空字符上。加一个数

字,是指距窗口顶部、底部的行数

相对于光标的翻页:光标所在行移动窗口的顶端、中间或底部:"zt"、"zz"和"zb"。

5,查找:直接在Normal模式下输入"/",然后输入你想查询的字符串,回车,就跳转到第一个匹配的地方了。

"?"进行反方向查找。命令"n"重复上一次的查找命令,而命令"N"也重复上一次的查找命令,只不过它按

相反方向查找。使用"q/"和"q?"命令,在vim窗口最下面打开一个新的窗口,这个窗口会列出你的查找历

史记录####################20090316#################关于替换1.输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配串。

2. 输入 :s/thee/the/g 则是替换全行的匹配串3.输入 :#,#s/old/new/g 替换两行之间出现的每个匹配串(#,#代表的是两行的行号)。4.输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。5.进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc其余的不重复说了。6.查找时,设置 ic 选项(ic就是英文忽略大小写Ignore Case的首字母缩写词),即输入:set ic

[点滴积累]vim使用(1)(FromQQ)相关推荐

  1. 源于十年来的点滴积累——《变革中的思索》印行出版

    源于归国十年来的点滴积累, 集结成书的<变革中的思索>,日前由电子工业出版社刊印出版. 这本书共有五个章节,分别是解码创新.中国智造.管理心得.我和微软.心灵记忆--前三章偏重技术,更多理 ...

  2. Vue项目开发中的点滴积累系列文章

    题记 -- 严于律己,精于行动,点滴积累,着眼未来,你也许不负青春 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架 本文章 记录从基础入门到实际项目开发中的点点 ...

  3. 【mysql】点滴积累

    一,replace mysql 中的replace 函数直接替换mysql 数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来很方便 格式:UPDATE table_name set  f ...

  4. 2022年终总结:点滴积累让我不再迷茫

    今年是开始写作的第二年,如果说第一年是起步的话,今年就是开始有了一些小收获了,通过点滴积累让我知道积累的充实感,通过一点一点粉丝或阅读量的积累,增加写作的自信. 今年的收获 首先看一下今年的阅读量和粉 ...

  5. 点滴积累-从object中取值

    问题 很多人在编程中可能会遇到这样的问题,返回一个object对象,怎么取其中的值 解决方案 一般获得的值都需要转换成字符串对象.如果Object中只有一个值,直接转换就可以.多个值的情况下怎么获取呢 ...

  6. MyBatis点滴积累

    MyBatis在使用中不知不觉积累了很多经验 1.#和$ MyBatis/Ibatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #us ...

  7. 点滴积累--工作总结

    工作又进入到一个新的阶段,开始新的启程,再次接触新的报表,熟悉新的开发流程,一点一点的积累在报表上的开发线路. 其实现在回想,过去的这四个月很充实,但乐在其中,每天早饭后直接步行到公司,按着前一天规划 ...

  8. oracle以查询多括号报错,oracle点滴积累

    文章已移至新博客:http://www.youzitool.com/index/detail/id/24.html 本文主要对oracle的一些常用或易犯错的知识点进行积累总结,根据工作情况将不断更新 ...

  9. 点滴积累【C#】---检验编号在本表中自动生成,与其他表无关

    检验编号在本表中自动生成,与其他表无关 效果: 描述:在本表中自动生成编号,与其他表无关. 调用: 1 protected void Page_Load(object sender, EventArg ...

最新文章

  1. bash 运行程序 下一步_怎样用 Bash 编程:语法和工具
  2. Linux-NFS原理介绍
  3. 原生JS DOM操作方法汇总
  4. 线程:方法join的使用
  5. 一个xmltojson类
  6. linux重启sshd命令,重启sshd服务
  7. HDU1231(DP)
  8. Python pip install 包后,pycharm仍然提示No module named(提示 No module named ‘pip‘)
  9. 微信小程序物联网应用_简化物联网应用程序入门的提示
  10. 阿里 mysql cluster_MySQL Cluster集群安装及使用-阿里云开发者社区
  11. OkHttp之ConnectInterceptor简单分析
  12. 连续竞价java_Java 方法method
  13. 树莓派蜂鸣器唱歌c语言,关于蜂鸣器唱歌程序
  14. python找电影资源_python一键电影搜索与下载
  15. Android WebApp NativeApp 适配测试自动化平台GoGo实现 东海陈光剑
  16. [ CTF ]天格战队WriteUp-首届数字空间安全攻防大赛(初赛)
  17. T40之小黑不能充电记
  18. Java计算一个时间段与当前时间的进度百分比
  19. xtrabackup全量、增量备份恢复mysql数据库
  20. 2018上海交大计算机考研,2018上海交大学硕考研经验贴

热门文章

  1. Docker学习笔记(二)--进阶篇
  2. Java 8 - Stream基本实例及Stream的并行处理在线程上的表现
  3. Android开发工程师高效成长指南
  4. MatLab-----GUI之菜单栏
  5. GetDlgItem所获取CWnd*的时效性
  6. 2023全国职业技能大赛“信息安全管理与评估”-第三阶段任务书解析(高职组)
  7. 全国职业院校技能大赛信息安全管理与评估赛题一
  8. kali快捷键和设置方式
  9. Android混淆配置
  10. 爬虫程序定时执行和监控示例