vi命令使用

vi是Linux中内置的一个文本编辑器(类似Windows中的记事本)。
vi 可以对文件中内容进行编辑。

命令模式

  1. 使用vi 命令创建新文件
    1. 进入到/tmp 目录下
    2. 使用命令 vi biji.txt
      1. cd /tmp
      2. vi biji.txt
      image.png

编辑模式

在命令模式中 按下键盘的 “a” 或者 “i” 键。 可以从命令模式到编辑模式。
image.png
当文件内容输入完成之后, 按下键盘的 【ESC】 键

输入命令 (输入法调整为英文输入法)
:wq 保存并退出

image.png


命令模式下主要操作

  • :wq 退出并保存
  • :q! 退出不保存

练习

  1. 使用vi命令在 /tmp 目录下创建 fm.log 文件
  2. 在文件中输入如下内容

    1. 常用Linux命令
    2. cd
    3. pwd
    4. ls
    5. cp
    6. mv
  3. 保存并退出

  4. 使用cat 命令查看 fm.log 文件,并显示行号。

主要命令

下面介绍vi支持的常用文件操作命令。

行号显示

vi 打开文件之后,按下 【ESC】 键,

:set nu 显示行号
:set nonu 取消行号

image.png


移动光标

按下【ESC】键退出编辑状态

h或者左箭头(⬅) 光标向左移动一个光标
j或者下箭头(⬇) 光标向下移动一个光标
k或者向上箭头(⬆) 光标向上移动一个光标
l或者右箭头(➡) 光标向右移动一个光标
n n表示数字,比如20,按下数字之后按space空格键,表示向右移动20个字符
0或者功能键【Home】 移动到这一行的最前面字符处
$或者功能键【End】 移动到这一行的最后面字符处
G 移动到这个文件的最后一行
nG n为数字,移动到这个文件的第n行,例如20G移动到这个文件的第20行
gg 移动到第1行
n n为数字,向后移动n行。比如现在光标在 第20行处,输入20 并按下回车。 定位第40行(往后移动了20行)

练习

  1. 将 /var/log/messages 文件复制到 /tmp/messages
  2. 使用vi命令打开 /tmp/messages
  3. 显示行号
  4. 将光标移动到最后一行。

查找与替换

按下【ESC】退出编辑模式。

/word 向光标之下查找word的单词 /hello 表示搜索文件中的hello
?word 向光标之上查找word的单词
:n1,n2s/word1/word2/c n1,n2为具体的数字,表示在第n1行到n2行查找word1,并将查找到的word1替换为word2,替换之前会提示用户是否确认
:n1,n2s/word1/word2/g n1,n2为具体的数字,表示在第n1行到n2行查找word1,并将查找到的word1替换为word2(与/c的区别是:不再询问,直接替换
:1,$s/word1/word2/g 从第1行到最后一行,找word1,替换为word2

image.png

备注: 使用 /word 或者 ?word 搜索完成之后 按下 n 自动定位到下一个。


  1. 清空 /tmp 目录下所有的文件
  2. 复制 /var/log/messages 文件 到 /tmp 目录下
  3. vi 打开 /tmp/messages
  4. 将200-500 行中的 centos替换为wangdachui
    1. :200,500s/centos/wangdachui/c
  • 200 表示第200行
  • 500 表示第500行
  • s 表示搜索
  • /centos 搜索的内容
  • /wangdachui 替换的内容
  • /c 询问是否确认

    文件保存

    | :q! | 退出不保存 | | —- | —- | | :wq | 保存并退出 | | :w filename | 文件另存为 filename为具体的文件名 |

练习

  1. 将 /var/log/messages 文件复制到 /tmp目录下
  2. vi 编辑 /tmp/messages文件
  3. 将文件中所有的root 改为小明
  4. 文件另存为 messages_xiaoming

image.png
替换文本

  1. :1,$s/root/小明/g

文件另存为
image.png

  1. :w messages_xiaoming

image.png
退出编辑
image.png

  1. :q!

image.png

常见问题

  1. touch 可以创建文件 ,vi 也可以,两者有什么区别

区别就是 touch只能创建一个空文件,而vi可以进行编辑。