以下移动都是在normal模式下。
上面的操作都可以配合n使用,比如在正常模式(下面会讲到)下输入3h, 则光标向左移动3个字符。
使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 。
注意,类似cnw,dnw,ynw的形式同样可以写为ncw,ndw,nyw。
y, d, c, v都可以跟文本对象。
可以用或查找一个模式都在哪些地方出现过,
其中是调用外部的grep程序,而是vim自己的查找算法。
用法为:
的含义是如果一个模式在一行中多次出现,则这一行也在结果中多次出现。
的含义是grep结束后,结果停在第j项,默认是停在第一项。
前面可以加数字限定搜索结果的上限,如
只查找那个模式在本文件中的第一个出现。
其实在读纯文本电子书时特别有用,可以生成导航的目录。
比如电子书中每一节的标题形式为:。你就可以这样:
然后用或查看结果,可以用把窗口移到左侧,
就更像个目录了。
还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,
语法为
例如 。
表示对于以一个空格和开头的行执行normal模式下的dd命令。
关于range的规定为:
高级的查找替换就要用到正则表达式。
:help pattern得到更多帮助。
g ^g可以统计文档字符数,行数。 将光标放在最后一个字符上,用字符数减去行数可以粗略统计中文文档的字数。 以上对 Mac 或 Unix 的文件格式适用。 如果是 Windows 文件格式(即换行符有两个字节),字数的统计方法为: 字符数 - 行数 * 2。
我们可以一次打开多个文件,如
如果支持鼠标,切换和调整子窗口的大小就简单了。
让vim 正确处理文件格式和文件编码,有赖于 ~/.vimrc的正确配置
大致有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。
下面的括号匹配对编程很实用的。
有时一个tag可能有多个匹配,如函数重载,一个函数名就会有多个匹配。 这种情况会先跳转到第一个匹配处。
tab键补齐
Gtags综合了ctags和cscope的功能。 使用Gtags之前,你需要安装GNU Gtags。 然后在工程目录运行 gtags 。
vim提供了来编译程序,默认调用的是make, 如果你当前目录下有makefile,简单地:make即可。
如果你没有make程序,你可以通过配置makeprg选项来更改make调用的程序。 如果你只有一个abc.Java文件,你可以这样设置:
然后:make即可。如果程序有错,可以通过quickfix窗口查看错误。 不过如果要正确定位错误,需要设置好errorformat,让vim识别错误信息。 如:
%f表示文件名,%l表示行号, %m表示错误信息,其它的还不能理解。 请参考 :help errorformat。
其实是quickfix插件提供的功能, 对编译调试程序非常有用 😃
快速修改窗口在make程序时非常有用,当make之后:
当弹出补全菜单后:
normal模式下按:进入命令行模式