vi與vim的區別以及常用命令
最近在使用 ,經常修改配置檔案,但是在網上看教程的時候,發現有人使用vi ,也有人使用 vim ,但這兩者到底有什麼區別呢,下面為大家介紹,如果有需要伺服器的,可以後臺私信我
一、vi 與 的區別
1 、多級撤消
在 中,按u 只能撤消上次命令,而在 vim 裡可以無限制的撤消。
2 、易用性
vi 編輯器只能執行於 unix 中,而 vim 不僅可以執行於 unix ,還可用於 windows 、 mac 等多操作平臺。
3 、語法加亮
vim
可以用不同的顏色來加亮你的程式碼。
如下兩圖對比:
vi main.c
4 、視覺化操作
vim 不僅可以在終端執行,也可以執行於 windows 、 mac os 、 windows 。
5 、對 vi 完全相容
可以把vim 當成 vi 來使用。
小結:vi 和 vim 都是 Linux 中的編輯器,不同的是 vim 比較高階,可以視為 vi 的升級版本。 vi 使用於文字編輯,但是 vim 更適用於 coding 。
二、VI 模式
1 、命令列模式 ( command mode/ 一般模式)
任何時候,不管使用者處於何種模式,只要按一下“ESC”
鍵,即可使
Vi
進入命令列模式;我們在
shell
環境(提示符為
$
)下輸入啟動
vi
命令,進入編輯器時,也是處於該模式下。
在該模式下,使用者可以輸入各種合法的vi
命令,用於管理自己的文件。此時從鍵盤上輸入的任何字元都被當做編輯命令來解釋,若輸入的字元是合法的
Vi
命令,則
vi
在接受使用者命令之後完成相應的動作。但需注意的是,所輸入的命令並不在螢幕上顯示出來。若輸入的字元不是
Vi
的合法命令,
vi
會響鈴報警。
2 、文字輸入模式 ( input mode/ 編輯模式)
在命令模式下輸入插入命令i ( insert )、附加命令 a ( append )、開啟命令 o ( open )、修改命令 c ( change )、取代命令 r 或替換命令 s 都可以進入文字輸入模式。在該模式下,使用者輸入的任何字元都被 vi 當做檔案內容儲存起來,並將其顯示在螢幕上。在文字輸入過程中,若想回到命令列模式下,按 ”ESC” 鍵即可。
3 、末行模式 ( last line mode/ 指令列命令模式)
末行模式也稱轉義模式。
vi 和 Ex 編輯器的功能是相同的,二者主要區別是使用者介面。在 vi 中,命令通常是單個鍵,例如 i 、 a 、 o 等;而在 Ex 中,命令是以按Enter鍵結束的正文行。 vi 有一個專門的 “ 轉義 ” 命令,可訪問很多面向行的 Ex 命令。
在命令模式下,使用者按“:” 鍵即可進入末行模式下,此時 vi 會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個 “:” 作為末行模式的提示符,等待使用者輸入命令。多數檔案管理命令都是在此模式下執行的(如把編輯緩衝區的內容寫到檔案中等)。末行命令執行完後, vi 自動回到命令模式。
三、VIM 模式
1 、正常模式 (Normal-mode)
啟動vim 後預設處於正常模式(即命令列模式)。不論位於什麼模式,按下鍵 ( 有時需要按兩下)都會進入正常模式。
2 、插入模式 (Insert-mode)
在正常模式中按下i, a, o, I,A,O 鍵,會進入插入模式。現在只用記住按 i 鍵會進行插入模式。在插入模式中,擊鍵時會寫入相應的字元。
3 、命令模式 (Command-mode)
在正常模式中,按下: (英文冒號)鍵,會進入命令模式。
在命令模式中可以執行一些輸入並執行一些vim 或外掛提供的指令,就像在 shell 裡一樣。這些指令包括設定環境、檔案操作、呼叫某個功能等等。
4 、可視模式 (Visual-mode)
在正常模式中按下v , V , +v ,可以進入可視模式。
可視模式中的操作有點像拿滑鼠進行操作,選擇文字的時候有一種滑鼠選擇的即視感,有時候會很方便。
四、VI 與 VIM 的常用命令
注:由於VI 與 VIM 在命令上幾乎相同,所以這裡那 VIM 為例。
1 、模式轉換
正常–> 輸入:以下這幾個引數實現的功能都是轉為輸入模式,只不過轉換後的游標所在的位置不同(感興趣可以試一試,雖然意義不大!)
i :在當前游標所在字元的前面,轉為輸入模式;
a :在當前游標所在字元的後面,轉為輸入模式;
o :在當前游標所在行的下方,新建一行,並轉為輸入模式;
I :在當前游標所在行的行首,轉為輸入模式;
A :在當前游標所在行的行尾,轉為輸入模式;
O :在當前游標所在行的上方,新建一行,並轉為輸入模式;
輸入 -- > 正常:
ESC
正常--> 末行 ::( 英文冒號 )
末行--> 正常:
ESC , ESC
注意:輸入模式和末行模式之間不能直接切換。
2 、關閉檔案(末行模式)
:q 退出; :q! 不儲存退出; :w 儲存; :w! 強行儲存; :wq 儲存退出 :wq! 強制儲存並退出
注意:在正常模式下按組合鍵shift zz 可以儲存並退出
3 、移動游標(正常模式)
1 )逐字元移動:
h: 左;
l: 右;
j: 下;
k: 上;
#h: 移動 # 個字元
2 )以單詞為單位移動
w: 移至下一個單詞的詞首;
e: 跳至當前或下一個單詞的詞尾;
b: 跳至當前或前一個單詞的詞首;
#w: 移動 # 個單詞
3 )行內跳轉:
0: 絕對行首;
^: 行首的第一個非空白字元;
$: 絕對行尾
4 )行間跳轉
#G :跳轉至第 # 行;
gg: 第一行;
G :最後一行
5 )末行模式
.: 表示當前行;
$: 最後一行;
# :第 # 行;
+#: 向下的 # 行
4 、翻屏(正常模式)
Ctrl+f: 向下翻一屏;
Ctrl+b: 向上翻一屏;
Ctrl+d: 向下翻半屏;
Ctrl+u: 向上翻半屏
5 、複製字元
1 )正常模式
複製:
yy :複製當前行
nyy :複製當前行至下面的 n 行
貼上:
p :貼上到游標的後面
P :貼上到游標的前面
2 )可視模式
複製:
y :複製當前行
ny :複製當前行至下面的 n 行
貼上:
p :貼上到游標的後面
P :貼上到游標的前面
6 、刪除字元(正常模式)
x: 刪除游標所在處的單個字元;
#x: 刪除游標所在處及向後的共 # 個字元;
d$ 或 D: 從當前游標處刪除至行尾;
d^: 從當前游標處刪除之行首;
dd: 刪除當前游標所在行;
#dd: 刪除包括當前游標所在行在內的 # 行;
注:dd 相當於剪下操作,如果你 dd 之後按 p 或者 P 可以進行貼上。
7 、替換字元
r :替換單個字元(按完 r 在按你要替換的字元即可)
R :替換多個字元(從你要替換的位置開始替換,直至你退出正常模式)
8 、撤銷編輯操作: u
u :撤消前一次的編輯操作;
#u :直接撤消最近 # 次編輯操作;
溫馨提示:連續u 命令可撤消此前的 n 次編輯操作;
9 、將另外一個檔案( /path/sunhui.txt )的內容填充在當前資料夾中
:r /path/sunhui.txt :填充到當前檔案所在游標的後面
1
10 、修改 vim 配置檔案
vim ~/.vimrc :修改當前使用者的 vim 配置檔案
vim /etc/vimrc :修改所有使用者的 vim 配置檔案
例:在當前使用者的vim 配置檔案中新增顯示行數的命令
vim ~/.vimrc :在末行新增 set nu 即可
11 、擴充(末行模式)
1 )顯示或取消顯示行號
:set nu // 顯示
:set number // 顯示
:set nonu // 取消
2 )設定語法高亮
:syntax on // 開啟
:syntax off // 關閉
3 )分屏
:vsp xxx.x // 將兩個檔案垂直分屏
:ctrl +w w // 切屏
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70022313/viewspace-2915639/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vi與vim的區別以及常用命令***
- Vim和Vi的常用命令
- Linux中Vi和Vim區別是什麼?Linux
- Linux學習之Vi和Vim區別是什麼?Linux
- Vi 和 Vim 的使用
- 常用的vi/vim命令
- vi&vim命令列命令列
- vi/vim編輯器
- vi和vim的編輯模式模式
- 棧與堆的區別以及增長方向
- async與defer的作用與區別以及阻塞優化優化
- VIM常用命令
- cat和vim的區別是什麼?
- Linux– 檔案編輯器 vi/vim(1)Linux
- 使用 Vi/Vim 編輯器:基礎篇
- linux vim 常用命令Linux
- Linux中程式與執行緒的概念以及區別Linux執行緒
- 主流RPC框架詳解,以及與SOA、REST的區別RPC框架REST
- 【JavaScript】深入理解call,以及與apply、bind的區別JavaScriptAPP
- Python 關於TCP簡介以及與UDP的區別PythonTCPUDP
- Linux—vim/vi 翻頁跳轉命令快捷鍵Linux
- rgba與opacity的區別以及在遮罩層的運用遮罩
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- vi/vim配置篇:亂碼產生的原因及解決
- Solaris系統與Linux系統常用命令的區別介紹Linux
- 五分鐘看懂Hashtable原始碼以及與HashMap的區別原始碼HashMap
- #define巨集與列舉以及typedef關鍵字的區別
- Git常用命令,merge和rebase的區別Git
- numpy中np.array()與np.asarray的區別以及.tolist
- CSS偽元素詳解以及偽元素與偽類的區別CSS
- 無線AP以及其與無線路由器的區別路由器
- websocket以及http的區別筆記WebHTTP筆記
- has(),find()以及filter()方法的區別Filter
- 迭代器與可迭代物件的區別,以及iter()函式的使用。物件函式
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- ??與?:的區別
- 如何安裝和使用純文字編輯器 vi/vim
- Vim編輯器常用命令