文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!
进入vi的命令;
vi filename:打开或者新建文件,并将光标置于第一行首
vi +n filename:打开文件,并将光标置于第n行首
vi + filename:打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename:在上次用vi编辑时发生系统崩溃,恢复filename
移动光标类命令;
h:光标左移一个字符
l:光标右移一个字符
space:光标右移一个字符
backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n:光标下移一行
enter:光标下移一行
w或W:光标右移一个字至字首
b或B:光标左移一个字至字首
e或E:光标右移一个字至字尾
):光标移至句尾
(:光标移至句首
}:光标移至段落结尾
{:光标移至段落开头
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H:光标移至屏幕顶行
M:光标移至屏幕中间行
L:光标移至屏蔽底行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
屏幕翻滚类命令;
ctrl+u:向文件首翻半屏
ctrl+d:向文件尾翻半屏
ctrl+f:向文件尾翻一屏
ctrl+b:向文件首翻一屏
nzz:将第n行滚至屏幕顶部
插入文本类命令;
i:在光标前
I:在当前光标所在行行首
a:在光标后
A:在当前光标所在行行尾
o:在当前光标所在行下新开一行
O:在当前光标所在行上新开一行
r:替换当前字符(选中字符输入r后,则选中字符可被下次输入的字符替换)
R:替换当前字符及其后的字符,直至ESC键(选中字符输入R后,则选中字符及之后的字符可被下次输入的字符替换)
s:删除当前光标选中的字符,并输入想要替代的一个或者多个字符
S:删除当前光标选中的这行字符,并输入想要替代的字符
nC: 删除含光标所在行在内,光标下n行的字符
复制删除命令;
yy:复制当前光标所在行所有字符
nyy:复制包含当前光标所在行在内的之后n行字符
p:在当前光标所在行的下一行粘贴之前复制的字符
d$:删除当前光标所在字符及光标之后这行的字符
dd:删除当前光标所在行
ndd:删除含当前光标所在行以内的以下的n行字符
x或X:删除一个字符,x删除光标后的字符,X删除光标前的字符
dG:删除当前光标所在行以及之后所有的字符
搜索以及替换命令;
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g :将当前行中所有p1均用p2代替
:n1,n2s/p1/p2/g :将第n1至第n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
选项设置;
all:列出所有选项设置情况
number:显示出当前光标所在行的行数
list:显示制表位(ctrl+I)和行尾标志($)
set nu:显示所有行的行数
最后行方式命令;
:q:退出vi
:q!:不保存文件并退出vi
:x:保存当前文件并退出
:w:保存但是不退出
:wq:保存并退出
:e filename :打开文件filename 进行编辑
:n1,n2 d:将n1行到n2行之间的内容(包含第n1,n2行)删除(如果只有n1则只删除n1)
:n1,n2 m n3:将n1行到n2行之间的内容(包含第n1,n2行)移动到第n3行下(移动相当于剪切)
:n1,n2 co n3:将n1行到n2行之间的内容(包含第n1,n2行)拷贝到第n3行下(拷贝也就是复制)
:e! 放弃当前的所有修改,重新打开这个文件

vi_删除全部文本
:1,$d
:.,$d 这个需要光标在第一行才可以。

vi编辑器快捷键使用详解的更多相关文章

  1. Linux中vi编辑器的使用详解

    vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.可是会用的有多少呢.下面介绍一下vi编辑器的简单用法和部分命令.让你在Linux系统中畅行无阻. 基本上vi可以分为三种状态 ...

  2. Eclipse或Myeclipse常用快捷键组合详解

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.. Eclipse(Myeclipse)中有很多便于开发的快捷键 ...

  3. [转帖]Vim编辑器使用方法详解

    Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...

  4. vi/vim编辑器使用方法详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对Unix及li ...

  5. 29、vi和vim用法详解

    vi类似于windows中的文本文件,用于普通的文本文件 vim:专家版的文件编辑器,用于shell程序型文件,带颜色,自检查语法 一般模式快捷键 O:光标到一行的首 $:光标到一行的尾 H:光标到整 ...

  6. Vi三种模式详解

    命令行模式 (command mode/一般模式) 任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式:我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时 ...

  7. Linux系统中的vi/vim指令【详解】

    vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...

  8. vim编辑器的使用详解

    在Linux江湖,最常用到的编辑器非vim莫属,vim的功能很强大. 1.   vim简介 在Linux世界中,最长用到的而且功能比较强大的是Vim编辑器.Vim编辑器是在内存缓冲区中处理数据. vi ...

  9. Linux下创建文本文件(vi/vim命令使用详解)

    vi test.txt 或者 vim test.txt vim是vi的升级版,指令更多,功能更强. 下面是收集的vim用法,当在vim里面要实现退出,首先要做的是按[Esc],然后再输入[:wq] 一 ...

随机推荐

  1. CMakeList相关

    cmake使用示例与整理总结 http://blog.csdn.net/wzzfeitian/article/details/40963457/ 对应的demo:https://github.com/ ...

  2. linux 下shell程序(二)

    输入和输出 输入指的是Shell程序读入数据.有从文件读取.从用户输入读取等方式读入数据.输出指的是Shell程序的运行 结果的处理,可以显示到屏幕或保存到文件. 用ceho命令输出结果 echo $ ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.5——在项目中共享配置

    问题: 取出多个模块下相同的配置 解决方案: 在顶级gradle配置文件里面使用allprojects或者subprojects块 讨论: 当你在android studio中新建android项目时 ...

  4. POJ3487[稳定婚姻]

    The Stable Marriage Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2974 Accepted ...

  5. 自定义admin

    平时我们用的django自带admin,怎么评价呢?一个字简陋,而且也人性化,如下图,首先只显示数据对象,如果要查看详细还有点进去,其次不能对自己想要的数据进行刷选 我们的期望是:数据如excel显示 ...

  6. 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...

  7. 从B 树、B+ 树、B* 树谈到R 树(转)

      作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由weedge完成,R 树部分由Fra ...

  8. Python3.6全栈开发实例[005]

    5.接收两个数字参数,返回比较大的那个数字. def compare(a,b): return a if a > b else b # 三元表达式 print(compare(20,100))

  9. MySQL 第四天

    回顾 列属性: 主键, 自增长, 唯一键     关系: 一对一,一对多和多对多 范式: 三层范式 1NF: 字段设计必须符合原子性 2NF: 不存在部分依赖(没有复合主键) 3NF: 不存在传递依赖 ...

  10. PHP获取微信openid 简单教程

    //***方法一 获取code https://open.weixin.qq.com/connect/oauth2/authorize?appid=这里是你的公众号的APPID&redirec ...