本学期开始上大数据技术 感觉像是要开始捣鼓虚拟机了 那么虚拟机内使用的肯定还是vim 下面是我对vim的部分认知

首先vim理论上是四个模式

  1. 一般模式 也就是进入文档之后的最开始模式 此模式下可以使用剪贴、赋值、粘贴以及移动光标位置等
  2. 编辑模式 通过i或者a进入编辑模式 此模式下可以对文本内容进行编辑修改 通过Esc退出编辑模式进入一般模式
  3. 命令模式 在一般模式下输入: 或者 /进入 此模式下一般为查找 跳转的一些命令
  4. 可视模式 ? 大概是这个名字 说实话 不熟 大概记得这个模式可以拿鼠标操作? 但是我要是拿鼠标操作为什么不选择主机呢 进入方式是在一般模式下v 或者 V进入

虽然我一直认为只有两个模式emmm 也就是命令模式编辑模式 一般模式一直被我当成命令模式 感觉没什么差别好吧 下面的话就是一些vim常用的命令 不定期更新

移动光标hjkl

首先第一点 vim打开的文件是不能使用鼠标进行操作的 光标的移动也是通过键盘输入进行改变的 当然在一般模式下可以通过上下左右进行移动光标 但是在编辑模式下就不行了 编辑模式下使用上下左右的时候输出应该是大写字母 这个时候就需要使用hjkl 可以这样记忆 h和l刚好就在左右两侧 因此在哪一侧就是向那里移动 j和k的话联想一下 一般和左边相连的就是下边 右边就是上面

保存退出相关

很多人使用修改了文件之后发现退出不了了 没有右上角的删除 在vim中 退出需要在命令模式下使用:q进行退出 但是假如修改了文章之后就会发现 会报错 然后发现你上次修改了 请加上! 也就是说 按理来说 修改之后需要保存退出或者强制退出 那么强制退出就是:q! 丢弃一切的修改 保存退出就是:wq

行号和相对行号 set nu/relativenumber

由于vim是在终端内进行修改文件的而且不能使用鼠标 因此需要快速跳转到相应行 但是没有行号的话就会很麻烦 可以使用setnu开启行号 set relativenumber开启相对行号 也就是相对于当前位置行的行号表示 同时也可以直接修改全局配置 使用vi ~/.vimrc在根目录下创建一个vim的相关配置文件 并在其中写入set nu 这样的话之后使用vi打开的文件都会默认打开行号

复制粘贴cc yy p

同样是在命令模式下 使用n cc表示剪贴n行 n yy表示复制n行 这里是不会显示的 当n为1时可以省略 p表示粘贴文本

删除x

同样是在命令模式下 使用x表示删除当前光标内容 这里吐槽一下 我怎么记得好像在编辑模式下的左箭头是可以表示删除的 但是在virtualBox里面确实不能删除 很奇怪啊

文件头和尾 gg G

跳转到文件头gg或者文件尾G 这里的gg还有另外一个用法n gg表示跳转到第n行

当前行尾 ^ $

跳转当前行^和尾$

标记和跳转 m{mark} `{mark}

打标记 这里有一个很有意思的东西 就比如我写到某一个地方的时候需要在头部或者其他地方添加 但是这个地方和我现在这个位置相差比较远 比较麻烦 这样的话我就可以先在这个位置打上标记比如mm 添加万配置之后使用`m跳转回来 当然我的推荐是直接使用``跳转到上一次跳转位置

查找 * / n N

在命令模式下输入/str表示搜索str相关 使用N表示上一个 n表示下一个 也可以使用*表示查找光标当前位置的单词

宏与批量操作 q regName

宏是一个什么玩意 可以类比用户自己配置的一些命令 vim可以使用a-z作为寄存器 寄存器可以存放用户自己的命令 使用q regName开始记录 使用q退出 之后通过 n @regName调用相关命令 当n为1时可以省略 就比如说我现在有一份代码 我需要将21到41行的代码注释 那么就可以这样定义宏首先跳转到行首 然后输入/* 然后跳转到行尾 输入*/ 在切换下一行j 最后通过20@a调用