在linux下操作文件,通常会用到vi命令,现对其常用命令进行总结。

基本上vi/vim共分为三种模式,分别是命令模式、输入模式和底线命令模式,三者之间的关系如图所示。

一、移动光标的方法

(1)上下左右键(或者hjkl),(向下移动30行,使用30下或30j)

(2)Page Down,屏幕向下移动一页

(3)Page Up,屏幕向上移动一页

(4)n <space>,光标向右移动这一行的n个字符

(5)0或者Home,移动到这一行最前面的字符处

(6)$或End,移动到这一行最后字符处

(7)G,移动到文件的最后一行

(8)gg,移动到文件的第一行

(9)nG,移动到文件的第n行

(10)n<Enter>,光标向下移动n行

二、搜索和替换

(1)/word 向光标之下寻找一个名称为word的字符串

(2)?word向光标之上寻找一个名称为word的字符串

(3)n,N 代表重复前一个搜寻动作,如进行(1)操作后,按下n,自动向下寻找名为word的字符串,N自动向上寻找

(4):n1,n2s/word1/word2/g 在n1和n2行之间寻找word1这个字符串,并将该字符串取代为word2

(5):1,$s/word1/word2/g 或:%s/word1/word2/g 在第一行到最后一行寻找word1的字符,并将其替换为word2

(6):1,$s/word1/word2/gc 或:%s/word1/word2/gc 在第一行到最后一行寻找word1的字符,并将其替换为word2,且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!

三、删除、复制与粘贴

(1)x,X 在一行字中,x为向后删除一个字符,X为向前删除一个字符,10x为向后删除10个字符

(2)dd,删除光标所在的那一整行

(3)ndd,删除光标所在的向下n行(包含游标所在行)

(4)d1G,删除游标所在行到第一行的所有数据

(5)dG,删除游标所在行到最后一行的所有数据

(6)d$,删除游标所在位置到该行最后一个字符

(7)d0,删除游标所在位置到改行最前面一个字符

(8)yy,复制游标所在的那一行,nyy复制游标所在的向下n行

(9)y1G,复制游标所在行到第一行的所有数据

(10)yG,复制游标所在行到最后一行的所有数据

(11)y0,y$,复制游标所在字符到改行行首和行尾的所有数据

(12)p,P p为将已复制的数据在光标的下一行粘贴,P则为粘贴在游标的上一行

(13)J 将光标坐在行与下一行的数据结合成同一行

(14)u 复原前一个动作

(15)ctrl+r 重复前一个动作

(16)万能的.重复前一个动作

四、命令模式切换到可编辑模式

(1)i,I 进入输入模式,i为从目标光标所在处输入,I为目前所在行的第一个非空格符处开始输入。

(2)a,A 进入输入模式,a为从目前光标所在的下一个字符处开始输入, A 为从光标所在行的最后一个字符处开始输入。

(3)o,O 进入输入模式,o为从目前光标所在的下一行处输入新的一行,O为在目前所在处的上一行输入新的一行。

(4)r,R 进入取代模式,r只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,指导按下ESC为止。

五、文件保存和退出

(1):w 保存但不退出vi

(2):wq 保存文件并退出

(3):q 离开vi

(4):q! 强制离开vi,不保存

(5):w filename 将文件另存为

(6):n1,n2 w filename 将n1到n2行内容存储成filename

(7):r filename 在编辑的数据中读入另一个文件,将filename的内容加到游标后面

 六、vim环境变更

(1):set nu 每行前打印行号

(2):set nonu 取消每行前打印行号

(3):= 打印文件中的行数

(4):.= 打印当前行的行号

六、多文件编辑和窗口切换

(1)vim filename1 filename2 filename3 打开文件1,文件2,文件3

(2):n 进入下一个被vi打开的文件 :N进入上一个被vi打开的文件

(3):files 列出vi打开的所有文件

(4):sp filename 水平分割窗口,在已打开文件窗口页面,切换到另一个文件

(5):vsp filename 垂直分割窗口,在已打开文件窗口页面,切换到另一个文件

【Linux学习】【第一节】【vi命令】的更多相关文章

  1. Linux学习笔记:vi常用命令

    在Linux系统中常用vi命令进行文本编辑. vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved), ...

  2. Linux学习笔记(四) vi编辑器

    一.vi 编辑器 vi 编辑器 (Visual Interface) 是所有 Unix 及 Linux 系统下标准的编辑器,相当于 Windows 系统中的记事本 它有三种模式,分别是: Comman ...

  3. Linux学习之用户管理命令与用户组管理命令(十五)

    Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...

  4. Linux学习之Vim/Vi使用(十三)

    Linux学习之Vim/Vi使用 Vim/Vi简介 Vim/Vi工作模式 Vim/Vi基本使用 Vim/Vi应用技巧 Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UN ...

  5. MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件

    MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...

  6. OpenNebula学习第一节OpenNebula Front-end Installation

    一.说说情怀 随着公司硬件开发资源的不足,构建一个云平台似乎重要了起来.当然,也不是这个平台搭建的主力,出于工作的需求和个人兴趣爱好,接下来就来学习一下OpenNebula相关的东西,这是第一节课,先 ...

  7. Linux学习之路--常用命令讲解

    Linux常用命令讲解 1.命令格式:命令 [-选项]  [参数] 超级用户的提示符是# 一般用户的提示符是$ 如:ls -la /usr说明: 大部分命令遵从该格式多个选项时,可以一起写 eg:ls ...

  8. Linux高级编程--01.vi命令

    VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠 ...

  9. Linux学习《第二章命令》本章小结

    经过这一章的学习,了解了常用的命令.这是学习Linux系统最最基础的工作,必须努力掌握,个人觉得,并不是这个章节学习结束之后,命令的学习就结束了,而是刚刚开始,今后在每个知识点学习过程中,都会 学习到 ...

  10. 1001-MySQL学习-第一节自习课

    MySQL学习(第一节自习课) 一. 软件下载.安装 下载地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->installer-&g ...

随机推荐

  1. synchronized 代码块怎么用

    加不加 synchronized 有什么区别? synchronized 作为悲观锁,锁住了什么? 之前 2 篇文章我们已经知道 synchronized 的使用方法以及锁的内容(实例对象和Class ...

  2. 关于VUE的路由地址问题

    目前我们VUE的项目都是单页面应用,路由地址全都是#以不同的锚点去分发,根目录就是 http://localhost:8080/index#/   (至于为什么不是http://localhost:8 ...

  3. 3.k均值的算法

    一.课堂练习 # 课堂练习 from sklearn.datasets import load_iris # 导入鸢尾花数据 iris=load_iris() iris iris.keys() dat ...

  4. CRS-0184 Cannot communicate with the CRS daemon

    事件背景 rman清理脚本异常.导致磁盘空间爆满(一个环境变量没有设置正确) 释放磁盘空间,进行rman清理 之后,领导把实例重启,但是ams实例没有关闭 环境 系统 : AIX 数据库: Oracl ...

  5. Linux open() 一个函数,两个函数原型

    open在手册中有两个函数原型, 如下所示: int open(const char *pathname, int flags); int open(const char *pathname, int ...

  6. [Qt] QlineEdit 限制输入,例如只能输入整数

    要注意validor的作用域,如果超出作用域,则会无效.例如下面的代码,在UI的类的构造函数里.所以要new一个validtor. QIntValidator *intValidator = new ...

  7. Docker安装MySql完整教程、实操

    docker:官网 docker:镜像官网:        镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pull redis 默认拉取最新的版本(指定版本:docker p ...

  8. HDU 5725 Game

    1. 笔记 题意是求距离的期望(距离仍指连接两点且有效的路径长度的最小值).直观想象可以发现,该距离与曼哈顿距离相比最多多2(可以构造这样的路径). 答案=(任意两点曼哈顿距离的总和 - 至少有一点是 ...

  9. 【Linux题目】第七关

    1. 如果想修改开机内核参数,应该修改哪个文件? A. /dev/sda1 B. /etc/fstab 磁盘自动挂载的文件 C. /boot/grub/grub.conf D. /etc/rc.loc ...

  10. 线程状态及各状态下与锁和CPU的关系

    线程的状态 Thread.State枚举类型中定义了线程的六种状态:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING和TERMINATED. 线程在某一时刻只能拥有 ...