標籤:
今天開始學習Linux,學習過程中我會在這裡記下一些學習筆記,先從基礎的學起,萬事開頭難,因此我會堅持!當下Linux系統已經有很多版本了,Linux其實就是Unix的衍生版本,以L開頭是因為它的創始人Linus,Unix是Unique + X版本號碼的縮寫...關於Unix和Linux的起源有很長的電腦史要講,本教程不講曆史,只談技術哦。本教程本著先易後難的原則進行的,所以基礎命令篇以Red Hat 6.0 企業版為實驗機器。先從基礎命令和系統管理學起,循序漸進,後面會有shell指令碼編程、伺服器架構、嵌入式Linux開發以及各種版本Linux系統的差別等進階應用程式,期待一下吧,今天是第一篇,我們先介紹Linux下最常用文本編輯命令vi/vim命令, vim(vi VImproved)是vi的升級版本。在新版本的RHEL6.0 中vi命令已經整合了vim的更新功能,兩個命令式完全一樣的。 Hope you to enjoy it, Let‘s go...vi/vim 命令1、簡介1.1 命令簡介
vi -h 我們可以看到如下關於vi的協助
usage: vim [arguments] [file ..] edit specified file(s)
or: vim [arguments] - read text from stdin #從標準輸入中讀入text shell編程中使用
or: vim [arguments] -t tag edit file where tag is defined #直接尋找某函數或變數,並開啟包含這個tag的檔案。設定tag 需用ctags命令產生tags list後才能使用
大家可以用gcc編一個c的程式測試一下,還是很好用的。
or: vim [arguments] -q [errorfile] edit file with first error #編輯錯誤檔案,游標直接定位到第一個錯誤
Arguments:
-- Only file names after this
-v Vi mode (like "vi") #直接進入 vi編輯模式
-e Ex mode (like "ex") #直接進入 末行模式
-s Silent (batch) mode (only for "ex")
-d Diff mode (like "vimdiff") #比較有用,可以對比兩個或多個檔案,具有代碼對比功能
-y Easy mode (like "evim", modeless) #直接進入 vi編輯模式
-R Readonly mode (like "view") #唯讀模式
-Z Restricted mode (like "rvim")
-m Modifications (writing files) not allowed
-M Modifications in text not allowed
-b Binary mode
-l Lisp mode
-C Compatible with Vi: ‘compatible‘
-N Not fully Vi compatible: ‘nocompatible‘
-V[N][fname] Be verbose [level N] [log messages to fname]
-D Debugging mode
-n No swap file, use memory only
-r List swap files and exit
-r (with file name) Recover crashed session
-L Same as -r
-A start in Arabic mode
-H Start in Hebrew mode
-F Start in Farsi mode
-T <terminal> Set terminal type to <terminal>
-u <vimrc> Use <vimrc> instead of any .vimrc
--noplugin Don‘t load plugin scripts
-p[N] Open N tab pages (default: one for each file) #開啟多個檔案tab格式, 末行模式中N/n切換上一個tab或下一個tab
-o[N] Open N windows (default: one for each file) #開啟多個檔案視窗格式, 末行模式中N/n切換上一個win或下一個win
-O[N] Like -o but split vertically #開啟多個檔案視窗格式(豎版), 末行模式中N/n切換上一個win或下一個win
+ Start at end of file #開啟檔案游標直接定位到檔案尾
+<lnum> Start at line <lnum> #開啟檔案游標直接定位到第<lnum>行
--cmd <command> Execute <command> before loading any vimrc file
-c <command> Execute <command> after loading the first file
-S <session> Source file <session> after loading the first file
-s <scriptin> Read Normal mode commands from file <scriptin>
-w <scriptout> Append all typed commands to file <scriptout>
-W <scriptout> Write all typed commands to file <scriptout>
-x Edit encrypted files
--startuptime <file> Write startup timing messages to <file>
-i <viminfo> Use <viminfo> instead of .viminfo
-h or --help Print Help (this message) and exit
--version Print version information and exit
1.2 常用的三種模式
vi編輯器主要有三種模式:
編輯模式:自由輸入常值內容,和普通操作文本類似
命令模式:通過命令直接編輯和控制文本游標
末行模式:通過命令儲存檔案或退出vi編輯器,即在螢幕最下面冒號後輸入的命令
1.3 模式之間的切換
命令模式 -> 編輯模式
使用命令vi filename開啟vi編輯器,首先進入的是命令模式。通過使用使用編輯按鍵(a, i, o 等後面會介紹)自動進入編輯模式。
編輯模式 -> 命令模式
按[ESC]鍵退出編輯模式進入命令模式
命令模式 -> 末行模式
按[:] 直接可輸入末行模式中的命令
末行模式 -> 命令模式
按[ESC]鍵退出末行模式進入命令模式
2、命令模式2.1 游標定位命令
H 游標前移一個字元
J 游標下移一行
K 游標上移一行
L 游標後移一個字元
0 游標移動到行的最前面
$ 游標移動到行的最後面
w 移動到下一個單詞的第一個字母
e 移動到下一個單詞的最後一個字母
b 移動到上一個單詞的第一個字母
^ 移動到當前游標所在行的第一個非Null 字元
[n]- 上移n行 (不加n 上移一行)
[n]+ 下移n行 (不加 n 下移一行)
nG 移動到第n行
[ctrl] d 下移半頁
[ctrl] f 下移一頁
[ctrl] u 上移半頁
[ctrl] b 上移一頁
fx 向右移動到x字元
Fx 向左移動到x字元
tx 向右移動到x字元前
Tx 向左移動到x字元前
; 重複一次fx/Fx操作
, 反方向重複一次fx/Fx操作
按下[/]末行輸入需要尋找的關鍵詞,按[Enter]尋找, 操作類似於末行模式
/x 向下尋找有x字元的位置
?x 向上尋找有x字元的位置
n 重複一次
N 反方向重複一次
[n]( 移動到上一個句子的第一個字元,空白段落也會當做一個句子,以!.?作為界定
[n]) 移動到下一個句子的第一個字元,空白段落也會當做一個句子,以!.?作為界定
[n]{ 移動到上一個段落的第一個字元,空白段落也會停頓一次,以空白行作為界定
[n]} 移動到下一個段落的第一個字元,空白段落也會停頓一次,以空白行作為界定
**n可選跳轉n行
2.2 文本修改命令
編輯插入模式與編輯替換模式通過[insert]鍵切換
a 從游標所在位置之後開始新增內容,進入編輯插入模式
A 從游標坐在行之後開始新增內容,進入編輯插入模式
i 從游標所在位置之前開始新增內容,進入編輯插入模式
I 從游標坐在行之前開始新增內容,進入編輯插入模式
o 在游標所在行新增一行開始新增內容,進入編輯插入模式。
O 在游標所在行上面新增一行開始新增內容,進入編輯插入模式。
x 刪除游標所在字元
dd 刪除游標所在行(確切的說是剪下)可以通過p粘貼 ndd 向下刪除n行
cc 刪除游標所在行(確切的說是剪下)可以通過p粘貼 進入編輯模式
yy 複製一行 nyy 複製游標下n行
p 粘貼緩衝區的內容,複製到游標後
P 粘貼緩衝區的內容,複製到游標前 (大寫P)
r 進入編輯替換模式,輸入內容直接替換內容,只能替換一個,替換完成後即回到命令模式
R 進入編輯替換模式,輸入內容直接替換內容,替換多個,需要手動回到命令模式
s 刪除游標所在字元,並進入編輯模式
S 刪除游標所在行,並進入編輯模式
u 撤銷最近一次修改,可操作多次
U 撤銷對當前行的所有修改
[Ctrl] + R 重做撤銷內容
d y c + 定位 組合命令
定位可以是下列幾個:
e 游標所在位置到該字的最後一個字母 ex. ye常用語複製一個單詞
w 游標所在位置到下個字的第一個字母
b 游標所在位置到上個字的第一個字母
$ 游標所在位置到該列的最後一個字母
0 游標所在位置到該列的第一個字母
) 游標所在位置到下個句子的第一個字母
( 游標所在位置到該句子的第一個字母
} 游標所在位置到該段落的最後一個字母
{ 游標所在位置到該段落的第一個字母
3、末行模式(行命令模式)3.1 儲存退出命令
q!不儲存退出
wq!儲存退出
不加驚嘆號按提示資訊操作確認/取消
ZZ 儲存退出,無提示
3.2 文本替換
:s/vivian/sky/ 替換當前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky
** n 為數字,若 n 為 .,表示從當前行開始到最後一行
:%s/vivian/sky/ 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g 替換每一行中所有 vivian 為 sky (g是貪婪匹配,正則用法)
:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/ 也可以使用+ 來作為分隔字元代替/(替換文本中/)
3.3 配置編輯器
在末行模式下可以使用set命令對vi做一些配置,常用的有:
:set nu顯示行號
:set nonu隱藏行號
:set ic設定搜尋時忽略大小寫
:set noic搜尋時對大小寫敏感
:set list顯示不可視字元
:set nolist不顯示不可視字元
:set showmode顯示當前操作模式
:set shownomode不顯示當前操作模式
:set all顯示所有的vi環境變數設定
:set fileformat=unix #將檔案修改為unix格式,如win下面的文字檔在linux下會出現^M。
在行命令模式中設定的配置都不能儲存,如果需要儲存我們需要在$HOME/下新增一個.vimrc的設定檔,.開標頭檔預設隱藏檔案,ls -a查看:
echo "set nu" >> .vimrc
這樣vi編輯器中就預設顯示行號了
vi自訂設定檔可以擴充很多功能,大家可以參考這篇文章
http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
3.4 編輯其他檔案
:e otherfilename
直接切換當前編輯檔案為另外一個檔案,需要先儲存當期檔案:w
4、總結
本文只是簡單了介紹vi編輯器常用的一些功能和操作命令,老外可以把vi編輯器寫成一本書,what‘ a awesome one! 其實能熟練掌握vi常用的一切操作已經很不容易了。萬事開頭難,這個編輯器不像windows中的記事本那麼友好,但是功能灰常強大,就像學五筆一樣,剛開始很痛苦,學成了就天下無敵了!好了就到這裡了,如果以後有補充的,我會繼續新增內容。下一次我們學習Linux檔案操作命令。
【[email protected]基礎篇 ~】# vi/vim 命令