Linux小推车linux tools

史上最全的Vim命令

2018-12-03  本文已影响257人  凯睿看世界

原文:
https://blog.csdn.net/scaleqiao/article/details/45153379

1. 关于Vim

vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)

1.1 Vim的几种模式

2. 启动Vim

3. 文档操作

4. 光标的移动

4.1 基本移动

以下移动都是在normal模式下。

上面的操作都可以配合n使用,比如在正常模式(下面会讲到)下输入3h, 则光标向左移动3个字符。

4.2 翻屏

4.3 标记

使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退前进

5. 插入文本

5.1 基本插入

5.2 改写插入

注意,类似cnw,dnw,ynw的形式同样可以写为ncw,ndw,nyw。

6. 剪切复制和寄存器

6.1 剪切和复制、粘贴

6.2 文本对象

y, d, c, v都可以跟文本对象。

6.3 寄存器

7. 查找与替换

7.1 查找

可以用grep或vimgrep查找一个模式都在哪些地方出现过,

其中:grep是调用外部的grep程序,而:vimgrep是vim自己的查找算法。

用法为: :vim[grep]/pattern/[g] [j] files

g的含义是如果一个模式在一行中多次出现,则这一行也在结果中多次出现。

j的含义是grep结束后,结果停在第j项,默认是停在第一项。

vimgrep前面可以加数字限定搜索结果的上限,如

:1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。

其实vimgrep在读纯文本电子书时特别有用,可以生成导航的目录。

比如电子书中每一节的标题形式为:n. xxxx。你就可以这样:

:vim/^d{1,}./ %

然后用:cw或:copen查看结果,可以用C-w H把quickfix窗口移到左侧,

就更像个目录了。

7.2 替换

还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,

语法为 :[range]g/pattern/command

例如 :%g/^ xyz/normal dd。

表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。

关于range的规定为:

7.3 正则表达式

高级的查找替换就要用到正则表达式。

:help pattern得到更多帮助。


8. 排版

8.1 基本排版

8.2 拼写检查

8.3 统计字数

g ^g可以统计文档字符数,行数。 将光标放在最后一个字符上,用字符数减去行数可以粗略统计中文文档的字数。 以上对 Mac 或 Unix 的文件格式适用。 如果是 Windows 文件格式(即换行符有两个字节),字数的统计方法为: 字符数 - 行数 * 2。


9. 编辑多个文件

9.1 一次编辑多个文件

我们可以一次打开多个文件,如

<pre class="literal-block" name="code" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 8px; position: relative; white-space: pre-wrap; word-wrap: break-word; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">vi a.txt b.txt c.txt
</pre>

9.2 多标签编辑

9.3 缓冲区

10. 分屏编辑

10.1 水平分割

10.2 垂直分割

10.3 关闭子窗口

10.4 调整窗口大小

10.5 切换和移动窗口

如果支持鼠标,切换和调整子窗口的大小就简单了。

11. 快速编辑

11.1 改变大小写

11.2 替换(normal模式)

11.3 撤消与重做(normal模式)

11.4 宏

12. 编辑特殊文件

12.1 文件加解密

这里是 滇狐总结的比较高级的vi技巧。

12.2 文件的编码

让vim 正确处理文件格式和文件编码,有赖于 ~/.vimrc的正确配置

12.3 文件格式

大致有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。

13. 编程辅助

13.1 一些按键

下面的括号匹配对编程很实用的。

13.2 ctags

有时一个tag可能有多个匹配,如函数重载,一个函数名就会有多个匹配。 这种情况会先跳转到第一个匹配处。

tab键补齐

13.3 cscope

13.4 gtags

Gtags综合了ctags和cscope的功能。 使用Gtags之前,你需要安装GNU Gtags。 然后在工程目录运行 <cite style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-style: italic; word-wrap: break-word;">gtags</cite> 。

13.5 编译

vim提供了:make来编译程序,默认调用的是make, 如果你当前目录下有makefile,简单地:make即可。

如果你没有make程序,你可以通过配置makeprg选项来更改make调用的程序。 如果你只有一个abc.java文件,你可以这样设置:

<pre class="literal-block" name="code" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 8px; position: relative; white-space: pre-wrap; word-wrap: break-word; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">set makeprg=javac\ abc.java
</pre>

然后:make即可。如果程序有错,可以通过quickfix窗口查看错误。 不过如果要正确定位错误,需要设置好errorformat,让vim识别错误信息。 如:

<pre class="literal-block" name="code" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 8px; position: relative; white-space: pre-wrap; word-wrap: break-word; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">:setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
</pre>

%f表示文件名,%l表示行号, %m表示错误信息,其它的还不能理解。 请参考 :help errorformat。

13.6 快速修改窗口

其实是quickfix插件提供的功能, 对编译调试程序非常有用 :)

快速修改窗口在make程序时非常有用,当make之后:

13.7 自动补全

当弹出补全菜单后:

13.8 多行缩进缩出

13.9 折叠

14. 命令行

normal模式下按:进入命令行模式

14.1 命令行模式下的快捷键:

14.2 执行外部命令

15. 其它

15.1 工作目录

15.2 一些快捷键(收集中)

15.3 在线帮助

15.4 一些小功能

上一篇下一篇

猜你喜欢

热点阅读