VI和VIM编辑器使用教程

VI/VIM编辑器使用教程

1. Vi/Vim编辑器简介

  • Vi:Visual Interface的简称
  • Vim:Vi IMitation的升级版(支持更多功能)
  • 特点:
    • Linux系统标配全屏文本编辑器
    • 无图形界面,完全通过命令操作
    • 支持跨平台使用

2. 启动与退出

启动方式

方式1:直接启动
vi

方式2:编辑已有文件
vi filename.txt

方式3:创建新文件
vi newfile.txt

退出方式

  1. 进入命令模式(按ESC
  2. 输入:
  3. 执行退出命令:
    :q          # 未修改时退出
    :q!         # 强制退出(放弃修改)
    :wq         # 保存并退出
    :x          # 保存并退出(与:wq等效)
    

3. 工作模式

三种基本模式

  1. 命令模式(默认):

    • 接收编辑命令(非文本内容)
    • ESC返回此模式
  2. 输入模式

    • 输入文本内容
    • 进入方式:i(插入)、a(追加)、o(新行插入)
  3. 底线命令模式

    • 输入特殊命令(以:开头)
    • 进入方式:按:
    • 常用操作:保存、退出、查找替换等

模式切换流程

命令模式 ↔ 输入模式 ↔ 底线命令模式

4. 核心操作

命令模式操作

光标移动
h       # 左移
j       # 下移
k       # 上移
l       # 右移
0       # 移动到行首
$       # 移动到行尾
G       # 移动到文件末尾
gg      # 移动到文件开头
文本编辑
x       # 删除当前字符
dd      # 删除当前行
yy      # 复制当前行
p       # 粘贴
u       # 撤销
Ctrl+R  # 重做
查找替换
:/pattern    # 向下查找关键字
?pattern     # 向上查找关键字
:n           # 跳转到下一个匹配项
:N           # 跳转到上一个匹配项

:#,#s/old/new/g  # 替换范围(如1,5s/hello/world/g)
:%s/old/new/g    # 替换全文

底线命令模式操作

:set number       # 显示行号
:set nonumber     # 取消行号
:split filename   # 水平分屏
:vsplit filename  # 垂直分屏
:close            # 关闭当前窗口

5. 高级功能

可视块操作(Vim特有)

Ctrl+v          # 进入块选择模式
I{content}<ESC> # 块插入(在选中列前插入内容)
r{char}         # 块替换(替换选中列为指定字符)

多文件操作

同时打开多个文件
vim -o file1.txt file2.txt  # 水平分屏
vim -O file1.txt file2.txt  # 垂直分屏

窗口切换
Ctrl+w h/j/k/l  # 切换到左/下/上/右窗口
Ctrl+w q        # 关闭当前窗口
Ctrl+w o        # 关闭其他窗口

文件比较

vimdiff file1.txt file2.txt  # 对比两个文件差异

6. 实战练习

练习1:鸡兔同笼问题

// jitu.c
#include 

int main() {
    int a, b, head, foot;
    scanf("%d %d", &head, &foot);
    a = (4*head - foot)/2;
    b = head - a;
    printf("鸡:%d,兔:%d\n", a, b);
    return 0;
}

编译运行:

gcc -g jitu.c -o jitu
./jitu

练习2:加法口诀表

// test.c
#include 

int main() {
    int i, j;
    for(i=1; i<=9; i++) {
        for(j=1; j<=i; j++) {
            printf("%d+%d=%-2d ", j, i, i+j);
        }
        printf("\n");
    }
    return 0;
}

编译运行:

gcc -g test.c -o test
./test

练习3:乘法口诀表

// cf.c
#include 

int main() {
    int i, j;
    for(i=1; i<=9; i++) {
        for(j=1; j<=i; j++) {
            printf("%d*%d=%-2d ", j, i, i*j);
        }
        printf("\n");
    }
    return 0;
}

编译运行:

gcc -g cf.c -o cf
./cf

练习4:Shell脚本操作

#!/bin/bash
mkdir -p xxgc/txgc/wlgc
cd xxgc/wlgc
touch 1.txt
cd ../txgc
touch 2.txt
cp 2.txt ../wlgc
cd ../wlgc
mv 1.txt wl1.txt
mv 2.txt wl2.txt

执行脚本:

chmod +x test.sh
./test.sh

注:完整配置请参考 /etc/vimrc 文件

你可能感兴趣的:(Linux,编辑器,vim,linux)