C語言中文網 目錄
首頁 > vi命令 閱讀:2,685

進入vi編輯器(vi打開文件)

打開一個 shell 終端,在說明符后輸入 vi和 想要編輯(或建立)的文件名,便可進入 vi 編輯器,其格式如下:

vi filename


下面實例演示了進入 vi 編輯器編輯一個名為 test.c 的文件。

$ vi test.c

屏幕顯示如下:

 
~
~
~
~
~
~
~
~
~
~
~
~
"test.c" [New File]

  表示光標。
如果只輸入 vi,而不帶文件名,也可以進入 vi。這時編輯的文件是沒有文件名的,所以在退出 vi 時,需要在退出命令后輸入文件名,這樣才能保證該文件被保存在磁盤中。

進入 vi 之后,首先進入的就是命令模式,也就是說等待命令輸入而不是文本輸入。這時輸入的字母都將作為命令來解釋。

光標表示 vi 編輯器的當前編輯位置停留在屏幕第 1 行首位上。其余各行行首均有一個~符號,表示該行為空行。

最后一行也稱狀態行,顯示當前正在編輯的文件名及其狀態。如本例是 [New File],表示 test.c 是一個新建的文件,其中還沒有任何內容。如果 test.c 文件已在系統中存在,那么輸入上述命令后,則在屏幕上顯示出該文件的內容,并且光標停在第 1 行的首位,在狀態行顯示出該文件的文件名、行數和字符數。

如果希望在進入 vi 后,光標處于文件中特定的某行上,可在 vi 命令上加上行號和文件名,其格式如下:

vi +行號  文件名

下例演示了打開一個文件并進行定位,在 shell 終端中輸入打開 vi 編輯器的命令如下:

$ vi +5 test.c

屏幕顯示如下:

#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}

int main(void)
{
    int i, sum;
    for (i = 0; i < 3; i++) {
        sum = add(i, i + 1);
        printf("%d\n", sum);
    }
}
"test.c" 13L, 175C

光標將位于文件 test.c 中的第 5 行,語句return a + b;的行首。如果希望在進入 vi 之后光標處于文件最末行,則只需去掉命令中+后面的數字 n 即可,如下所示。

$ vi + test.c

這時光標會停留在最后一行的}字符。

vi 編輯器支持模式匹配,也就是說用戶可以在命令中指定一個模式串。之后進入 vi 后,光標就處于文件中第一個與指定模式串相匹配的那行上。其格式如下:

vi +/模式字符串  文件名

下面實例演示查找 test.c 中的 main() 函數,并對其進行以下編輯:

$ vi +/main test.c

光標將停留在文件 test.c 中第 6 行的開頭,如下所示。

#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int main(void)
{
    int i, sum;
    for (i = 0; i < 3; i++) {
        sum = add(i, i + 1);
        printf("%d\n", sum);
    }
}
"test.c" 13L, 175C

如果需要取消高亮顯示,可以在末行模式下使用以下命令:

:set nohlsearch

使用 vi 可以同時編輯多個文件,只要在進入 vi 的命令中寫入所要操作的文件即可,還可以使用通配符,其格式如下:

vi 需要打開文件的通配符

如果需要打開當前目錄下所有的C語言源文件,則可以使用以下命令:

$ vi *.c

如果在一個C語言的工程中需要快速定位某函數并且對其進行編輯,則可以同時使用打開文件的通配符和模式匹配字符串。下例演示了如何在一個完整的工程中快速定位某個函數并且對其進行編輯。

1) 在 vi 編輯器中編輯 common.h 程序如下:
#include <stdio.h>
#include <stdlib.h>
extern void swap(int *a, int *b);

2) 在 vi 編輯器中編輯 swap.c 程序如下。
#include "common.h"
void swap(int *a, int *b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

3) 在 vi 編輯器中編輯 main.c 程序如下。
#include "common.h"
int main(void)
{
    int a, b;
    sacnf("%d %d", &a, &b);
    swap(a, b);
    printf("%d, %d\n", a, b);
    return 0;
}

4) 保存并且退出 vi 編輯器。

5) 打開該程序中的所有源文件,并且將顯示位置定位在 main() 函數上。

$vi +/main *.c *.h

一個C程序的源文件一般只包括兩種,即頭文件(.h文件)和源文件(.c文件)。因此該命令執行后,將打開目錄內所有的.h文件和.c文件,并且將當前編輯文件設置為 main.c 文件,光標置于 main.c 文件的第 3 行。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo