vim简单教程
本学期开始上大数据技术 感觉像是要开始捣鼓虚拟机了 那么虚拟机内使用的肯定还是vim 下面是我对vim的部分认知
首先vim理论上是四个模式
一般模式
也就是进入文档之后的最开始模式 此模式下可以使用剪贴、赋值、粘贴以及移动光标位置等编辑模式
通过i或者a
进入编辑模式 此模式下可以对文本内容进行编辑修改 通过Esc退出编辑模式进入一般模式命令模式
在一般模式下输入: 或者 /
进入 此模式下一般为查找 跳转的一些命令可视模式
? 大概是这个名字 说实话 不熟 大概记得这个模式可以拿鼠标操作? 但是我要是拿鼠标操作为什么不选择主机呢 进入方式是在一般模式下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
调用