[TOC]
# VIM基礎
在Linux系統上最常用的就是VIM編輯器,它除支持Linux外還支持Mac和Windows。VIM分為三種使用模式,分別為:
* 輸入模式:在命令模式下輸入(i,a,A等),可以進入輸入模式
* 命令模式 (默認):任何輸入都會作為編輯命令,而不會出現屏幕上,若輸入錯誤則有聲音提示
* 特殊模式:以“:”或者“/”為前導指令,出現屏幕的最下一行,任何輸入當作命令執行。
## 命令模式
| 命令 | 輸入方法 |
| --- | --- |
| **進入輸入的方法** |
| a | 在光標后面輸入文本 |
| A | 在當行的末尾輸入文本 |
| i | 在光標后輸入文本 |
| I | 在當前行輸入文本 |
| o | 在當前行輸入新一行 |
| O | 在當前行前輸入新一行 |
| **光標移動的方法** |
| b | 移動到當前單詞開始 |
| e | 移動到當前單詞尾開始 |
| w | 向前移動一個單詞 |
| h | 向前移動一個字符 |
| j | 向上移動一行 |
| k | 向下移動一行 |
| l | 向后移動一個字符 |
| **刪除操作** |
| x | 刪除光標所在的字符 |
| dw | 刪除光標所在的單詞 |
| d$ | 刪除光標至行尾所有字符 |
| dd | 刪除當前行 |
| **改變與替換操作** |
| r | 替換光標所在字符 |
| R | 替換字符序列 |
| cw | 替換一個單詞 |
| cb | 替換光標所在的前一個字符 |
| c$ | 替換自光標位置至尾行的所有字符 |
| **拷貝粘貼命令** |
| yw | 將光標所在的單詞拷貝到剪貼板 |
| y$ | 將光標至尾的字符拷貝如剪貼板 |
| yy | 將當前行拷貝到剪貼板 |
| p | 將剪貼板的內容粘貼到光標后 |
| P | 將剪貼板的內容粘貼到光標前 |
## 特殊模式
| 命令 | 輸入方法 |
| --- | --- |
| :q | 不保存退出 |
| :q! | 不保存強制退出 |
| :w | 保存編輯 |
| :w filename | 存入文件filename中 |
| :w! filename | 強制存入文件filename中 |
| **其他命令** |
| :set nu | 顯示行號 |
| :nG | 跳至第n行 |
| :u | 撤銷 |
| . | 重做 |
| :nyy | 拷貝第n行 |
| :e filename | 創建新文件 |
| :n filename | 加載新文件 |
| :vnew filename | 同時打開新文件 |
# VIM案例
批量給文件增加注釋。
```
:1,10s/^/#/g
```
批量刪除文件注釋。
```
:1,10s/^#//g
```
批量替換關鍵字root為admin。
```
:%s/root/admin/gc
```
# VIMRC文件的配置
編輯宿主目錄中的“ vim ~/.vimrc ”文件 ,增加以下內容。 執行 “ source .vimrc ”命令,用于加載此文件并立即生效。
```
set number
set shiftwidth=4
set softtabstop=4
set autoindent
set fileencodings=utf-8,gb2312,gbk,gb18030,big5
set fenc=utf-8
set enc=utf-8
set background=dark
```
| 命令 | 解釋 |
| --- | --- |
| set number | 設置行號 |
| set tabstop=4 | *tabstop*選項設置 tab 字符的顯示寬度為多少個空格,默認值是 8 |
| set autoindent | 設置自動縮進 |
| set fileencodings=utf-8,gb2312,gbk,gb18030,big5 | 文件編碼 |
| set fenc=utf-8 | fencs,是用來在打開文件的時候進行解碼的猜測列表 |
| set enc=utf-8 | enc,其作用是顯示, 不管最后的文件是什么編碼的,VIM都會將其轉換為當前系統編碼來進行處理 |
| set background | 設置背景顏色 |
# 本章小結
本章主要介紹Linux下最常用的編輯器VIM的基本使用,關于它的三種模式,以及在命令模式和特殊模式下的快捷鍵。最后還介紹了VIM配置文件的使用方便我們將常用的方法規劃到配置文件中。下一章我們將會介紹系統管理,介紹那些系統運維工程師經常會用的系統文件。
# 習題
1.復制 /etc/passwd 文件到 /tmp 目錄,并修改passwd文件中的關鍵字,將關鍵字root替換為administrator。
2.復制 /etc/passwd 文件到 /tmp 目錄,將“#”批量替換第一列。