vi/vim是什么?
Linux世界幾乎所有的配置文件都是以純文本形式存在的,而在所有的Linux發行版系統上都有vi編輯器,因此利用簡單的文字編輯軟件就能夠輕松地修改系統的各種配置了,非常方便。vi就是一種功能強大的文本編輯器,而vim則是高級版的vi,不但可以用不同顏色顯示文字內容,還能進行諸如shell腳本、C語言程序編輯等功能,可以作為程序編輯器。
為什么要學習vi/vim?
首先所有的Linux發行版系統上都會默認內置vi編輯器,而不一定帶有其他文本編輯器,非常通用;其次,很多軟件的編輯接口都會默認調用vi;第三,vi具有程序編輯的能力;最后,vi程序簡單,編輯速度相當快速。
vi的三種模式及各個模式之間的轉換關系
一般模式常用操作
【h(或向左方向鍵)】
光標左移一個字符
【j(或向下方向鍵)】
光標下移一個字符
【k(或向上方向鍵)】
光標上移一個字符
【l(或向右方向鍵)】
光標右移一個字符
【[Ctrl] + f】
屏幕向下移動一頁(相當于Page Down鍵)
【[Ctrl] + b】
屏幕向上移動一頁(相當于Page Up鍵)
【[0]或[Home]】
光標移動到當前行的最前面
【[$]或[End]】
光標移動到當前行的末尾
【G】
光標移動到文件的最后一行(第一個字符處)
【nG】
n為數字(下同),移動到當前文件中第n行
【gg】
移動到文件的第一行,相當于"1G"
【n[Enter]】
光標向下移動n行
【/word】
在文件中查找內容為word的字符串(向下查找)
【?word】
在文件中查找內容為word的字符串(向上查找)
【[n]】
表示重復查找動作,即查找下一個
【[N]】
反向查找下一個
【:n1,n2s/word1/word2/g】
n1、n2為數字,在第n1行到第n2行之間查找word1字符串,并將其替換成word2
【:1,$s/word1/word2/g】
從第一行(第n行同理)到最后一行查找word1注冊,并將其替換成word2
【:1,$s/word1/word2/gc】
功能同上,只不過每次替換時都會讓用戶確認
【x,X】
x為向后刪除一個字符,相當于[Delete],X為向前刪除一個字符,相當于[Backspace]
【dd】
刪除光標所在的一整行
【ndd】
刪除光標所在的向下n行
【yy】
復制光標所在的那一行
【nyy】
復制光標所在的向下n行
【p,P】
p為將已經復制的數據在光標下一行粘貼;P為將已經復制的數據在光標上一行粘貼
【u】
撤消上一個操作
【[Ctrl] + r】
多次撤消
【.】
這是小數點鍵,重復上一個操作
一般模式切換到編輯模式的操作
進入插入模式(6個命令)
【i】
從目前光標所在處插入
【I】
從目前光標
【a】
從當前光標所在的下一個字符處開始插入
【A】
從光標所在行的最后一個字符處開始插入
【o】
英文小寫字母o,在目前光標所在行的下一行處插入新的一行并開始插入
【O】
英文大寫字母O,在目前光標所在行的上一行處插入新的一行并開始插入
進入替換模式(2個命令)
【r】
只會替換光標所在的那一個字符一次
【R】
會一直替換光標所在字符,直到按下[ESC]鍵為止
【[ESC]】
退出編輯模式回到一般模式
一般模式切換到命令行模式
【:w】
保存文件
【:w!】
若文件為只讀,強制保存文件
【:q】
離開vi
【:q!】
不保存強制離開vi
【:wq】
保存后離開
【:wq!】
強制保存后離開
【:! command】
暫時離開vi到命令行下執行一個命令后的顯示結果
【:set nu】
顯示行號
【:set nonu】
取消顯示行號
【:w newfile】
另存為
【:set fileencoding】
查看當前文件編碼格式
【:set fileencoding=utf-8】
設置當前文件編碼格式為utf-8,也可以設置成其他編碼格式
【:set fileformat】
查看當前文件的斷行格式(dos\windows,unix或macintosh)
【:set fileformat=unix】
將當前文件的斷行格式設置為unix格式
文件恢復模式
【[O]pen Read-Only】
以只讀方式打開文件
【[E]dit anyway】
用正常方式打開文件,不會載入暫存文件內容
【[R]ecover】
加載暫存文件內容
【[D]elete it】
用正常方式打開文件并刪除暫存文件
【[Q]uit】
按下q就離開vi,不進行其他操作
【[A]bort】
與quit功能類似
塊選擇(一般模式下用)
【v,V】
v:將光標經過的地方反白選擇;V:將光標經過的行反白選擇
【[Ctrl] + v】
塊選擇,可用長方形的方式選擇文本
【y】
將反白的地方復制到剪貼板
【d】
將反白的內容刪除
多文件編輯
【vim file1 file2】
同時打開兩個文件
【:n】
編輯下一個文件
【:N】
編輯上一個文件
【:files】
列出當前用vim打開的所有文件
多窗口功能
【:sp [filename]】
打開一個新窗口,顯示新文件,若只輸入:sp,則兩窗口顯示同一個文件
【[Ctrl] + w + j】
光標移動到下方窗口
【[Ctrl] + w + k】
光標移動到上方窗口
【[Ctrl] + w + q】
離開當前窗口
vim配置文件
vim的配置文件為/etc/vimrc
,但一般不建議直接修改這個文件,而是在用戶根目錄下創建一個新的隱藏文件:
vim ~/.vimrc
然后編輯這個文件,常用的配置如下:
"雙引號后面的內容為注釋
set nu "顯示行號
set hlsearch "查找的字符串反白顯示
set backspace=2 "可隨時用退格鍵進行刪除
set autoindent "自動縮排
set ruler "在最下方一行顯示狀態
set showmode "在左下角顯示模式
set bg=dark "顯示不同的底色,還可以為light
syntax on "語法檢驗,顏色顯示
Dos與Linux的斷行字符(文件轉化)
dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
-k
:保留該文件原本的mtime時間格式
-n
:保留原本舊文件,將轉換后的內容輸出到新文件
語系編碼轉化
iconv --list
列出iconv支持的語系編碼
iconv -f
原本編碼 -t 新編碼 filename [-o new file]
-f
:from,后接原本的編碼格式
-t
:to,后接新編碼格式
-o file
:可選參數,建立新文件
例:將/tmp/a.txt
從big5編碼格式轉換成utf8編碼格式:
iconv -f big5 -t utf8 /tmp/a.txt -o new.txt