[26/3/12]vim编辑器入门
参考资料:《鸟哥的 Linux 私房菜 基础篇》第 9 章
为什么学习 vim
首先,在任意的 Linux 环境下都会配备有 vi 编辑器。
而 vim 则是 vi 编辑器的进阶版。
然后,很多程序都会调用 vim 的接口,所以说不得不了解学习这个 vim。
三种模式
- 一般命令模式:这个模式下就是不能打字!但是可以复制粘贴之类的。
- 编辑模式:这个模式下才可以打字!
- 命令行模式:不对文本进行操作的模式。
一般命令模式
需要记住以下几个快捷键即可:
::启动命令模式/:搜索,比如想要搜索 OpenCV,就输入/OpenCV然后可以按n来向下找搜索结果(其实是启动了命令模式)- 左下上右移动:左
h;下j;上k;右l; u:Undo,也就是撤销,就是 win 下的 ^Z ;dd:剪切所在的这一行yy:复制所在的这一行p:Paste,粘贴G:移动到尾行nG:移动到第 n 行(n 是数字)gg:移动到第一行- 数字的含义就是重复多次操作,比如说
5yy表示连续复制 5 行内容
插入家族(进入编辑模式)
i(insert):在光标前插入(你目前用的)。a(append):在光标后插入。I(大写 I):光标瞬间跳到这一行的行首,并开始插入。(写 Shell 脚本时,一键跳到行首加#注释,极其爽)。A(大写 A):光标瞬间跳到这一行的行尾,并开始插入。(写 C++ 时,发现句尾漏了分号,无论光标在哪,直接按A敲下;,行云流水)。o(小写 o):在当前行的下方,直接新开一个空行,并进入插入模式。(最常用的加代码方式)。O(大写 O):在当前行的上方,新开一个空行。
行内跳跃家族
0(数字零):瞬间跳到行首。$(美元符号):瞬间跳到行尾。w(word):向右跳一个单词。(比如从std::cout直接跳到下一个变量名)。b(back):向左跳一个单词。e(end):跳到当前单词的最后一个字母。
比如你想删除光标后的 3 个单词,直接在一般模式下敲 3dw。
文本对象操作
Vim 实际上有一套自己的语法:动词 + 介词 + 名词。
- 动词:
c(修改 change,等同于删掉并进入插入模式)、d(删除 delete)、y(复制 yank) - 介词:
i(在...内部 inside)、a(包含边界 around) - 名词:
w(单词 word)、"(引号)、((括号)
例子:假设你有这样一行 C++ 代码:printf("Hello LeetCode %d\n", num);,你的光标停在 LeetCode 这个词上的任意位置。
- 在 Vim 里: 你只需要极其优雅地敲下三个键:
ci"(Change Inside Quotes)。Vim 会瞬间自动把" "里面的所有内容清空,并让你直接开始打字! - 你想把
LeetCode这个单词删掉?直接敲diw(Delete Inside Word)。
编辑模式
[ESC]:退出,回到一般模式- 进入需要看前文的插入家族
编辑模式就和一般的编辑器没啥区别
命令模式
[ESC]:退出命令模式回到一般模式:w:write,写入文件:q:quit,退出:q!:不保存修改,强制退出(!表示强制):wq:保存并退出,最常用:set nu:显示行号:set nonu:不显示行号
多行操作
v:多行的字符选择V:多行的行选择^v:矩形方式的多行选择y:多行内容的复制d:多行内容的剪切p:粘贴
多文件操作
主要是为了跨文件的内容复制粘贴。
vim [filename 1] [filename 2] ...:同时打开多个文件:n:下一个文件:N:上一个文件:files:列出打开的所有文件
多窗口
不需要使用 vim 自带的多窗口,分屏还是靠 Tmux 比较好。
跨系统兼容
换行符的问题
由于 win 和 Linux 的换行符定义不相同,所以文本文件保存之后,跨系统传输之后执行的时候会出问题,这个时候可以通过一个工具来将文件内容做一个转换,转换完成之后就可以正常执行了。
dos2unix [-kn] file [newfile]unix2dos [-kn] file [newfile]
编码格式的问题
可以手动转换编码格式:
icov --listicov -f 原本编码 -t 新编码 filename [-o newfile]
补充说明:-f 表示 from,-t 表示 to,最后的 [-o newfile] 如果写出来了,就表示原文件保留下来,生成的新文件被另外保存。
推荐配置
配置文件为:~/.vimrc
set number " 显示行号
set syntax=on " 语法高亮
set expandtab " 将输入的 Tab 自动展开为空格
set tabstop=4 " 一个 Tab 键代表 4 个空格的宽度
set shiftwidth=4 " 在使用 >> 或 << 进行缩进时的宽度也是 4
因为真实的生产环境下,一般不会有非常多的个性化配置,所以推荐个性配置越少越好,推荐就以上几个配置就够了