- vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档)
- VI/VIM
- vim是增强的vi,通过yum install -y vim 安装
- 区别
- 1)vim有语法高亮
- 2)vim有扩展功能
- 为什么要用vi
- 1)我们在工作接触的配置文件都是文本文件
- 2)Linux最好用的字符文本编辑器是vi,也是默认就安装好的
- 3) Linux系统一切皆为文件 vim是学习Linux最重要的命令之一
- vi的特点
- 1)纯键盘操作,效率高
- 2)三种工作模式
- vi的三种工作模式的名称及切换方式
- 1)命令模式,默认模式,只能通过相应的指令来实现功能 (控制光标的移动,对文本进行复制、粘贴
- 删除等操作)
- 2)输入模式,insert模式,可以往文件中输入字符 (对文本内容编辑和修改)
- 3)末行模式,:进入末行模式,通过相应的指令实现功能
- 命令模式——>(aio)输入模式
- <—— (ESC)
- 命令模式 ——>(:) 末行模式
- <——(ESC)
- 练习命令模式进入输入模式的方式
-
- a 光标后输入
- i 光标前输入
- o 光标所在行往下新建行输入
- A 光标所在行尾输入
- I 光标所在行首输入
- O 光标所在行往上新建行输入
-
- 复制 /etc/passwd/tmp 文件 然后编辑vim /tmp/passwd
- cp /etc/passwd /tmp/
- vim /tmp/passwd
- 一个文本内容的操作
- 1.光标的移动
- 命令模式
- 上下左右方向键 h左j下k上l右
- 行内光标跳转
- home或^ 行首
- end或$ 行尾
- w 跳转至下一个单词词首
- 行间光标跳转
- gg 首行
- G 末行
- ngg 跳转到第n行
- 末行模式
- 行间光标跳转
- :n 跳转到第n行
- :% 末行
- 行间光标跳转
- 2.复制
- 命令模式
-
- yw 复制光标到单词词尾
- yy 复制光标所在行
- nyy 从光标所在行开始往下复制n行
-
- 末行模式
- :ny 复制第n行
- :m,ny 复制第m到第n行
- :%y 复制全文
- 3.粘贴
- 命令模式
- p 在光标后粘贴
- P 在光标前粘贴
- 4.删除
- 命令模式
- x 删除光标所在字符
- dw 删除光标到单词词尾
- dd 删除光标所在行
- ndd 从光标所在行开始往下删除n行
- x 删除光标所在字符
- 末行模式
- :nd 删除第n行
- :m,nd 删除第m到第n行
- :%d 删除全文
- 5.剪切
- 先删除
- 再粘贴
- 6.查找
- 命令模式
-
- /str 从上至下
- ?str 从下至上
- n 下一个,从上往下查
- N 下一个,从下往上查
-
- 7.替换
- 命令模式
- r 替换光标所在单个字符
- R 进入替换模式,将输入的所有字符替换当前字符,ESC退出
- r 替换光标所在单个字符
- 末行模式
- :s/old/new/ 将光标所在行的第一个old替换成new
- :s/old/new/g 将光标所在行所有的old替换成new
- :ns/old/new/g
- :m,ns/old/new/g
- :%s/old/new/
- 练习案例:
- 将/etc/passwd里的所有的'/sbin'替换成cloud
- 方法一:使用转义符
- %s/\/sbin/cloud/g
- 如果需要替换的是/sbin/nologin 替换成/bin/bash
- %s/\/sbin\/nologin/\/bin\/bash/g
- 方法二:换一种方法
- %s#/sbin#cloud#g
- 类似的还有@#$%等都可以成为分隔符
- 8.撤销
- 命令模式
- u 撤销一步
- U 撤销所有
- 9.保存
- 末行模式
-
-
-
-
- :w 保存,前提示该文件有名字
- :w 文件路径 另存至文件路径
-
-
-
-
- 需求:
- 新建一个文件hello.txt,内容为 "hello world",将该文件另存至/opt/test.txt
- 方法一:
- echo "hello world" >hello.txt
- cp hello.txt /opt/test.txt
- 方法二:
- vi hello.txt
- hello world
- :w
- :w /opt/test.txt
- 10.退出
- 末行模式
-
-
-
- :q 正常退出,未修改该文件
- :q! 强制退出,不保存修改
-
-
- :x 保存退出
-
- :wq 保存退出
-
- :wq! 强制保存退出
- 用户对该文件没有写权限,但是对该文件所属目录有写权限
-
- 命令模式
- ZZ 保存退出
- 11.扩展
- 1)设置变量
- :set nu #显示行号
- :set ic #忽略大小写, 在搜索的时候有用
- :set ai #自动缩进
- :set list #显示制表符(空行、tab键)
- :set no[nu|ic|ai…] #取消临时设定的变量
- 可以通过~/.vimrc来编写vim的个性化模板
- 2)调用系统命令
- :!cmd
- 案例:在vi里查看当前路径
- :!pwd
- 案例:在vi里获取当前主机的主机名,并写入当前文件中第n+1行
- :nr !hostname
- 3)视图模式
- 行视图
- shift+v
- 选中光标行,在通过行跳转指令,选中需要编辑的行,执行复制、删除、剪切操作
- 块视图
- ctrl+v
- 修改块信息,比如批量缩进、注释
- 案例1:
- 将文件的第1-10行,批量注释
- 方法一:块视图
- 1.光标移动到1行
- 2.ctrl+v
- 3.10gg或用方向下键移动到10行
- 4.shift+i
- 5.输入#
- 6.两次ESC
- 方法二:用替换来实现
- :1,10s/^/#/g
- 案例2:将1-5行的注销符号#删除
- 方法一:块视图
- 1.光标移动到1行
- 2.ctrl+v
- 3.选中#,5gg或用方向下键移动到5行
- 4.d或x
- 方法二:使用替换来实现
- :1,5s/^#//g
- sublime的块编辑
- shift+鼠标右键