vi/vim使用教程
一、vim簡介
Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發者的一項很好用的工具。
連 vim 的官方網站 (http://www.vim.org) 自己也說 vim 是一個程序開發工具而不是文字處理軟件。
下面歸納vi的相關基本用法,基本與vim通用。
二、如何使用
2.1 三種模式
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(插入模式/編輯模式)(Insert mode)和底線命令模式(底行模式/末行模式)(Last line mode)。 這三種模式的作用分別是:
命令模式:
用戶剛剛啟動 vi/vim,便進入了命令模式。
此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,并不會輸入一個字符,i被當作了一個命令。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
輸入模式
在命令模式下按下i就進入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字符按鍵以及Shift組合,輸入字符
- ENTER,回車鍵,換行
- BACK SPACE,退格鍵,刪除光標前一個字符
- DEL,刪除鍵,刪除光標后一個字符
- 方向鍵,在文本中移動光標
- HOME/END,移動光標到行首/行尾
- Page Up/Page Down,上/下翻頁
- Insert,切換光標為輸入/替換模式,光標將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
底線命令模式
在命令模式下按下:(英文冒號)就進入了底線命令模式。
按ESC鍵可隨時退出底線命令模式。
需要注意的是:編輯模式與命令行模式之間是不能互相切換的。
2.2 常用操作
一般模式可用的按鈕說明
移動光標
【h、j、k、l】,分別控制光標左、下、上、右移一格
按【ctrl+b】屏幕往"后"移動一頁
按【ctrl+f】屏幕往"前"移動一頁
【n(space)】光標向右移動n個字符
【Home】移動到這一行的最前面字符處:0數字,但不能用數字小鍵盤上的數字
【End】 移動到這一行的最后面字符處
【w】光標跳到下個字的開頭
【e】光標跳到下個字的字尾
【H】 光標移動到這個屏幕的最上方那一行的第一個字符
【M】 光標移動到這個屏幕的中間那一行的第一個字符
【L】光標移動到這個屏幕的最下方那一行的第一個字符
【G】 移動到這個文件的最后一行
【nG】移動到這個文件的第n行(可配合:set nu)
【gg】 移動到這個文件的第一行,相當于1G
【n(Enter)】光標向下移動n行
查找與替換
【/word】 向光標向下尋找一個名稱為word的字符串
【?word】 向光標向上尋找一個名稱為word的字符串
【n】 代表重復前一個查找的動作
【N】 與n剛好相反,為【反向】進行行前一個查找動作
【:n1,n2s/word1/word2/g】 n1與n2為數字,在第n1與n2行之間查找word1 這個字符串,并將該字符串替換為word2
【:1,$s/word1/word2/g】 從第一行到最后一行查找word1字符串,并將該字符串替換為word2
【:1,$s/word1/word2/gc】 從第一行到最后一行查找word1字符串,并將該字符串替換為word2 ,且在替換前提示用戶確認是否進行替換
刪除、復制與粘貼
【x】 為向后刪除一個字符 (相當于【del】鍵)
【X】 為向前刪除一個字符(相當于【backspace】鍵)
【nx】 連續向后刪除n個字符
【dd】 刪除光標所在行
【ndd】 刪除光標所在的向下n行
【d1G】 刪除光標所在行到第一行的所有數據
【dG】 刪除光標所在到最后一行的所有數據
【d$】 刪除光標所在處,到該行的最后一個字符
【d0】 刪除光標所在處,到該行的最前一個字符
【yy】 復制光標所在的那一行
【nyy】 復制光標所在的向下n列
【y1G】 復制光標所在行到第一行的所有數據
【yG】 復制光標所在行到最后一行的所有數據
【y0】 復制光標所在的那個字符到該行行首的所有數據
【y$】 復制光標所在的那個字符到該行行尾的所有數據
【p】將已復制的數據在光標下一行粘貼上
【P】 則為貼在光標的上一行
【u】 恢復前一個操作
【Ctrl+r】重做上一個操作
【.】 是重復前一個操作
一般模式切換到編輯模式的可用的按鈕說明
【i, I】 進入編輯模式:
i 為【從目前光標所在處插入】
I 為【在目前所在行的第一個非空格符處開始插入】
【a, A】 進入編輯模式(Insert mode):
a 為【從目前光標所在的下一個字符處開始插入】
A 為【從光標所在行的最后一個字符處開始插入】
【o, O】 進入編輯模式:
o 為【在目前光標所在的下一行處插入新的一行】
O 為在目前光標所在處的上一行插入新的一行
【r, R】 進入取代模式:
r 只會取代光標所在的那一個字符一次
R會一直取代光標所在的文字,直到按下 ESC 為止;
【Esc】 退出編輯模式,回到一般模式
一般模式切換到命令行模式可用的按鈕說明
【:w】 保存編輯的內容
【:w!】強制寫入該文件,但跟你對該文件的權限有關
【:q】 離開vi
【:q!】 不想保存修改強制離開
【:wq】 保存后離開
【:x】 保存后離開
【ZZ】 若文件沒有更動,則不保存離開,若文件已經被更改過,則保存后離開
【:w filename】 將編輯的數據保存成另一個文件(類似另存)
【:r filename】 在編輯的數據中,讀入另一個文件的數據。即將【filename】 這個文件的內容加到光標所在行后面。
【:n1,n2 w filename】 將n1到n2的內容保存成filename這個文件。
【:! command】暫時離開vi 到命令行模式下執行command的顯示結果!例如 【:! ls /home】即可在 vi 當中察看/home底下以ls輸出的文件信息!
【:set nu】 顯示行號
【:set nonu】 與 set nu 相反,為取消行
常見問題
1)vim中右鍵點擊粘貼無效,反倒是進入了Visual模式。
修改/etc/vim/vimrc文件,在最后加入一句:
set mouse=
注意等號后無任何字符。
vi與vim的區別
它們都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面。
vim的這些優勢主要體現在以下幾個方面:
1、多級撤銷
我們知道在vi里,按 u只能撤消上次命令,而在vim里可以無限制地撤消。
2、易用性
vi只能運行于unix中,而vim不僅可以運行于unix,還可以運行于windows ,mac等多種操作平臺。
3、語法加亮
vim可以用不同的顏色來加亮你的代碼。
4、可視化操作
就是說vim不僅可以在終端運行,也可以運行于x window、 mac os、 windows。
5、對vi的完全兼容
某些情況下,你可以把vim當成vi來使用。
vi和vim都是Linux中的編輯器,不同的是vim比較高級,可以視為vi的升級版本。vi適用于文本編輯,但是vim更適用于coding。
附件:
vim鍵盤圖
參考:
菜鳥教程
https://www.cnblogs.com/lijia0511/p/5644566.html
https://www.cnblogs.com/baichuanhuihai/p/7928404.html
總結
以上是生活随笔為你收集整理的vi/vim使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派vi编辑文件时退格键和方向键无法正
- 下一篇: STM32 CAN错误管理