Linux管理員 - 使用vi/vim文字編輯器



vim 代表的是vi文字編輯器在Linux上的一個更新、改進的版本。vim預設安裝在CentOS 7(CentOS的最新版本)上。但是,一些較舊的和最小化的基礎安裝預設情況下只包含原始的vi。

vi和vim之間最大的區別在於vim具有更高階的易用性功能,例如使用箭頭鍵移動游標。vim允許使用者使用箭頭鍵瀏覽文字檔案,而vi則只能使用“h”、“j”、“k”、“l”鍵,如下所示。

vi 文字文件導航 −

按鍵 動作
j 向下移動一行
k 向上移動一行
l 向左移動一個字元
h 向右移動一個字元

使用vim,可以使用標準英文(和其他常用語言)qwerty鍵盤佈局上的箭頭鍵來完成相同的操作。類似地,vi通常也無法解釋數字鍵盤。

現在,vi通常會符號連結到vim。如果您發現按下箭頭鍵時出現意外情況,請嘗試使用您的包管理器安裝vim。

vim在操作和開啟檔案時使用模式的概念。我們將重點關注的兩種模式是 −

  • 普通模式 − 這是vim在第一次開啟檔案時使用的模式,允許輸入命令

  • 插入模式 − 插入模式用於實際編輯檔案中的文字。

讓我們在vim中開啟一個檔案。我們將使用位於/usr/share/dict的CentOS預設字典 −

[root@localhost rdc]# cp /usr/share/dict/words

您看到的是以普通模式開啟的文字檔案。現在練習使用箭頭鍵瀏覽文件。另外,嘗試使用h、j、k和l鍵瀏覽文件。

Vim 期望我們傳送檔案操作命令。要啟用行號,請使用冒號鍵:shift+:。您的游標現在將出現在文件底部。鍵入“set nu”,然後按回車鍵。

:set nu

現在,我們將始終知道我們在檔案中的位置。這在vim中程式設計時也是必要的。是的!vim具有最佳的語法高亮顯示功能,可用於建立Ruby、Perl、Python、Bash、PHP和其他指令碼。

下表列出了普通模式中最常用的命令。

命令 動作
G 轉到檔案末尾
gg 轉到檔案開頭
x 刪除選定的字元
u 撤銷上次修改
Enter 向前跳轉多行
dd 刪除整行
? 搜尋字串
/ 轉到下一個搜尋結果

請嘗試在vim中執行以下任務,以熟悉它。

  • 搜尋字串“test”,然後是前5個結果

  • 找到“test”的前5個結果後,移動到文件開頭

  • 使用Enter鍵轉到第100行

  • 使用“x”刪除整個單詞

  • 使用“u”撤銷刪除操作

  • 使用“dd”刪除整行

  • 使用“u”恢復該行

我們假設我們對一個關鍵檔案進行了編輯,並且想要確保儲存任何意外更改。按shift+: 並鍵入:q!。這將退出vim,並丟棄所做的任何更改。

現在,我們想在vim中實際編輯一個檔案:在控制檯中鍵入:vim myfile.txt

我們現在正在檢視vim中一個空白的文字緩衝區。讓我們寫一些內容:例如 - 按“i”。

vim 現在處於插入模式,允許我們像在記事本中一樣編輯檔案。在緩衝區中鍵入幾段文字,任何您想要的內容。稍後,請按照以下步驟儲存檔案 −

  • 步驟1 − 按Esc鍵

  • 步驟2 − 按shift+

  • 步驟3 − 鍵入`:w myfile.txt` 並按Enter鍵

  • 步驟4 − 按shift+:

  • 步驟5 − 鍵入q! 並按Enter鍵

我們剛剛建立了一個名為myfile.txt的文字檔案並儲存了它 −

[root@localhost]# cat myfile.txt  
this is my txt file.
[root@localhost]#

Linux檔案輸入/輸出重定向

管道字元“|”將第一個命令的輸出傳遞給下一個命令。這稱為標準輸出或stdout。另一個常見的Linux重定向器是標準輸入或stdin

以下是兩個示例;第一個使用cat命令將檔案內容輸出到stdout。第二個使用cat命令使用standardinput重定向器讀取檔案並輸出其內容。

STDOUT

[root@centosLocal centos]# cat output.txt  
Hello, 
I am coming from Standard output or STDOUT. 
[root@centosLocal centos]#

STDIN

[root@centosLocal centos]# cat < stdin.txt  
Hello, 
I am being read form Standard input, STDIN. 
[root@centosLocal centos]#

現在,讓我們將cat的stdout“管道”到另一個命令。

[root@centosLocal centos]# cat output.txt | wc -l 
2 
[root@centosLocal centos]#

在上面,我們將cat的stdout傳遞給wc以處理管道字元。然後,wc處理來自cat的輸出,將output.txt的行數列印到終端。將管道字元視為一個“管道”,它將一個命令的輸出傳遞給下一個命令進行處理。

以下是處理命令重定向時要記住的關鍵概念。

編號 檔案描述符 字元
0 標準輸入 <
1 標準輸出 >
2 標準錯誤
追加stdout >>
賦值重定向 &
管道stdout |
basic_centos_linux_commands.htm
廣告
© . All rights reserved.