Linux vi命令总结

vi一般分为三种状态:命令模式、插入模式、底行模式

  1. 命令行模式(command mode)
    控制光标的移动,字符、字或行的删除
  2. 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
  3. 底行模式(last line mode)
    文件保存或退出vi,也可以设置编辑环境,如查询关键字、列出行号(set number)
    注:其中「ESC」键进行模式切换,一般归纳为插入模式和命令模式(底行模式也纳入命令模式)切换

进入vi的命令:

  • vi filename :打开或新建文件,光标在第一行首
  • vi +n filename :编辑打开文件,光标在第n行首
  • vi + filename :编辑打开文件,光标在最后一行首
  • vi +/error filename:打开文件,并将光标置于第一个与error匹配的字符处
  • vi -r filename :之前用vi编辑时发生系统崩溃,恢复filename
  • vi filename1 filename2 :打开多个文件,依次进行编辑

移动光标命令(都是在命令行模式下进行的):

  • k(Ctrl+p)、j(Ctrl+n、Enter 键)、h(backspace)、l (space) :光标上、下、左、右移动命令
  • w或W 光标右移一个字至下一个字首
  • e或E光标右移一个字至字尾
  • b或B光标左移一个字或一个单词至字首
  • ( { 、 ) }光标移至段落开头、段落结尾
  • $ 光标移到到当前行行尾
  • n$ 光标移至第n行尾
  • 0 光标移至当前行行首 (是数字0)
  • Ctrl+F 翻下一页
  • Ctrl+B 翻上一页
  • nG跳转命令,n为行数,使光标跳到指定行
  • G 光标到最后一行
  • Ctrl+g/G列出光标所在位置的行数和列数
  • :set number 在文本前列出所在行号

编辑命令:

  • i I 在光标当前字符前、光标当前行首插入文本
  • a A 在光标当前字符后、光标当前行末插入文本
  • o O 在光标当前行后面、当前行前面插入一行空行
  • dd 删除光标所在那一行
  • x 删除光标所在的那个字符
  • d$ 删除光标所在处到行尾的字符
  • :10,100d 删除文件10至100行的内容
  • r 替换一个字符 按住r 后 按替换的字符 光标所在字符就替换了
  • cw 删除光标所在单词,替换新的单词
  • /string、?string 光标所在处向后查找相应的字符串
  • :r test.sh vi file 在打开的文件file光标所在处读入test.sh(也可以在指定的行号后读入文件内容,6r test.sh 从文件的第6行开始读入test.sh)
  • :w /tmp/1 vi file后发现没有写权限,保存修改到临时文件/tmp/1
  • :20,60w /tmp/2 把vi file的第20~60行之间的内容另存成文件/tmp/2
  • :wq 保存文件 退出
  • :q! 不保存 直接退出
    注:其中的:号都是英文状态下的

编辑文件 行首或行尾添加字符串或替换字符串:

  • :1,$s/^/ 222 / 文件的第一行至最后一行的行首插入222
  • :%s/$/222/g 文件每行行尾添加222
  • :%s/:.*//g 将所有行:号后面到行尾部分替换为空 即删除后面部分
  • :%s/string1/string2/g 编辑文件将所有string1替换成string2
  • :3,7s/string1/string2/ 文件中的第3行到第7行中string1替换成string2
  • :%s#/usr/bin#/bin#g:%s//usr/bin//bin/g 将文件中所有/usr/bin 替换成/bin
    注:其中s为substitute,%表示所有行,g表示global

同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中:

vi file1 file2
yy 在文件1的光标处拷贝所在行
:n 切换到文件2 (n即next)
p 在文件2的光标所在处粘贴所拷贝的行 最后保存退出即可

more test.sh | grep -v ^$ | grep -v ^# 查看去掉所有空行和以#开始的注释行 的内容

发布了52 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/hyfstyle/article/details/88874132