龙空技术网

vim命令大全一文搞定

编程经验分享 106

前言:

眼前看官们对“确认当前操作应按什么键”可能比较关心,姐妹们都想要知道一些“确认当前操作应按什么键”的相关资讯。那么小编也在网络上网罗了一些关于“确认当前操作应按什么键””的相关资讯,希望姐妹们能喜欢,朋友们快快来学习一下吧!

在Linux中最常使用的编辑器就是vim,通过vim我们可以更好的更直观的编辑文本。现实工作中,大家都是在windows/mac下开发,故而对于Linux中的vim一些命令可能会忘记,今天我们就记录总结一下vim相关命令。

工作模式

vim的工作模式大体分为6种

普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换EX模式:类似于命令行模式,可以一次运行多个命令

vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式。

接下来我们还是来看看具体的操作吧?没有安装的可以使用 yum install vim 安装

普通模式

终端使用vim进入,其实就是使用vim打开一个文件进行浏览。例如

vim test.txt

编辑模式

主要用于编辑文件。比如,打开文件后按下 i ,就进入编辑模式了。如果你想要返回普通模式,请按 ESC

编辑文本

r - 替换当前字符R - 在 ESC 按下之前,替换多个字符J - 将下一行合并到当前行, 并在两部分文本之间插入一个空格gJ - 将下一行合并到当前行, 两部分文本之间不含空格gwip - 重新调整段落g~ - 大小写转换操作修饰符gu - 小写操作修饰符gU - 大写操作修饰符cc - 将光标所在的行删除, 然后进入插入模式c$ or C - 将光标处到行尾删除, 然后进入插入模式ciw - 将光标所在的单词删除, 然后进入插入模式cw or ce - 从光标位置开始, 修改单词s - 删除当前字符, 然后进入插入模式S - 清空当前行, 然后进入插入模式 (同cc)xp - 当前字符后移u - 撤销U - 撤销上一次的改动行的操作Ctrl + r - 重做(取消撤销). - 再次执行上个命令

插入模式

i - 从光标前开始插入字符I - 从行首开始插入字符a - 从光标后开始插入字符A - 从行尾开始插入字符o - 在当前行之下另起一行, 开始插入字符O - 在当前行之上另起一行, 开始插入字符ea - 从当前单词末尾开始插入Ctrl + h - 在插入模式下,删除光标前的字符Ctrl + w - 在插入模式下,删除光标前的单词Ctrl + j - 在插入模式下,另起一行Ctrl + t - 在插入模式下,向右缩进,宽度由 shiftwidth 控制Ctrl + d - 在插入模式下,向左缩进,宽度由 shiftwidth 控制Ctrl + n - 在插入模式下,在光标之前插入自动补全的下一个匹配项Ctrl + p - 在插入模式下,在光标之前插入自动补全的上一个匹配项Ctrl + rx - 插入寄存器 x 的内容Ctrl + ox - 暂时进入正常模式以发出一个正常模式命令 x。Esc - 退出插入模式

命令模式

该模式下可以对文件进行一些高级处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式。我在网上找了一张vim键盘图,大家可以参考一下

如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式

h - 左移光标j - 下移光标k - 上移光标l - 右移光标gj - 下移光标(折行文本)gk - 上移光标(折行文本)H - 移动到当前页面顶部M - 移动到当前页面中间L - 移动到当前页面底部w - 移动到下个单词开头W - 移动到下个单词开头(单词含标点)e - 移动到下个单词结尾E - 移动到下个单词结尾(单词含标点)b - 移动到上个单词开头B - 移动到上个单词开头(单词含标点)ge - 移动到上个单词结尾gE - 移动到上个单词结尾(单词含标点)% - 跳转到配对的符号(默认支持的配对符号组:: '()', '{}', '[]' - 在vim中使用 :h matchpairs 获得更多信息)0 - 移动到行首^ - 移动到行首的非空白符$ - 移动到行尾g_ - 移动到行内最后一个非空白符gg - 移动到文件第一行G - 移动到文件最后一行5gg or 5G - 移动到第五行gd - 跳转到局部定义gD - 跳转到全局定义fx - 移动到字符 x 下次出现的位置tx - 移动到字符 x 下次出现的位置的前一个字符Fx - 移动到字符 x 上次出现的位置Tx - 移动到字符 x 上次出现的位置的后一个字符; - 重复之前的f、t、F、T操作, - 反向重复之前的f、t、F、T操作} - 移动到下一个段落 (当编辑代码时则为函数/代码块){ - 移动到上一个段落 (当编辑代码时则为函数/代码块)zz - 移动屏幕使光标居中zt - 将光标定位在屏幕顶部zb - 将光标定位在屏幕底部Ctrl + e - 向下移动屏幕一行(保持光标不动)Ctrl + y - 向上移动屏幕一行(保持光标不动)Ctrl + b - 向上滚动一屏Ctrl + f - 向下滚动一屏Ctrl + d - 向下滚动半屏Ctrl + u - 向上滚动半屏

注意:命令前追加数字表示命令的重复次数, 比如 4j 表示向下移动四行

可视化模式命令

> - 向右缩进< - 向左缩进y - 复制d - 剪切~ - 大小写切换u - 将选中文本转换为小写U - 将选中文本转换为大写

剪切,复制,粘贴

yy - 复制当前行2yy - 复制 2 行yw - 复制当前单词yiw - 复制光标处的单词yaw - 复制光标处的单词及其前后的空格y$ or Y - 复制, 从光标位置到行末p - 在光标后粘贴P - 在光标前粘贴gp - 在光标后粘贴并把光标定位于粘贴的文本之后gP - 在光标前粘贴并把光标定位于粘贴的文本之后dd - 剪切当前行2dd - 剪切 2 行dw - 剪切当前单词diw - 删除光标处的单词daw - 删除光标处的单词及其前后的空格:3,5d - 删除 3 到 5 行:.,$d - 删除当前行到文件末尾:.,1d - 删除当前行到文件开头:10,$d - 从第 10 行到文件末尾:g/{pattern}/d - 删除所有包含模式的行:g!/{pattern}/d - 删除所有不包含模式的行d$ or D - 剪切, 从光标位置到行末 (同 D )x - 剪切当前字符

查找替换

/pattern - 查找 pattern?pattern - 向上查找 pattern\vpattern - pattern 中的非字母数字字符被视为正则表达式特殊字符 (不需转义字符)n - 查找下一个N - 查找上一个:%s/old/new/g - 替换全部:%s/old/new/gc - (逐个)替换:noh[lsearch] - 移除搜索结果的高亮显示

如果有写的不对的地方可以在我的公众号留言,我会及时更新本文章内容。

标签: #确认当前操作应按什么键