小白學習Vi/Vim編輯器安裝及使用總結
Table of Contents
1.vi/vim是什麼? 2.vim模式有哪些?如何切換? 3.使用vim如何開啟檔案? 4.關閉檔案 5.移動游標 6.翻屏: 7.刪除 8.貼上命令: p 9.複製命令:y 10.修改c:先刪除內容,在轉換為輸入模式 11.替換:r 12.撤銷編輯操作:u(undo) 13.重複前一次編輯操作. 14.視覺化模式:
使用Linux系統肯定不是衝著UI去的。肯定得使用終端命令列模式,但是怎麼使用Terminal編輯文字呢?可以使用vi,現在大多數使用Vim,Vi之於Linux/Unix就像記事本之於Windows一樣,這句話也有點問題:
Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。
簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程式開發者的一項很好用的工具。連 vim 的官方網站 (
1、使用Ctrl+Alt+T快捷鍵進入Terminal之後,在命令列中輸入vim,如果未安裝會得到下面的提示:
Command 'vim' not found, but can be installed with:
sudo apt install vim
sudo apt install vim-gtk3
sudo apt install vim-tiny
sudo apt install vim-athena
sudo apt install vim-gtk
sudo apt install vim-nox
sudo apt install neovim意思就是vim命令無法識別,但是可以安裝vim或vim-gtk3等編輯器來使用vim。
到這裡就有疑惑了,除了vim瞭解一點外,其他的都是什麼鬼,和vim有啥關係?
這裡以neovim為例說一下:
NeoVim 專案地址: GitHub - neovim/neovim
Vim 原專案地址: GitHub - vim/vim
巴西程式設計師 Thiago de Arruda Padilha(aka tarruda)向 Vim開源編輯器專案遞交了兩大補丁,對Vim的架構進行了大幅調整,結果遭到了Vim作者Bram Moolenaar的拒絕,因為對於Vim這樣一個成熟的專案進行如此大的改變風險太高。於是tarruda發起了Vim fork專案Neovim,集資1萬美元打造出21世紀的編輯器,提供更好的指令碼、外掛支援,整合現代的圖形介面。
Bram Moolenaar 在寫 Vim 時還是 90 年代初,至今已經 20 多年 過去了。其中,不僅包含了大量的遺留程式碼,而且程式的維護、Bug 的 修復、以及新特性的新增都變得越來越困難。為了解決這些問題,Neovim 專案應運而生。Neo 即“新”之意,它是 Vim 在這個新時代的重生。
到這裡差不多就明白他們的聯絡了。vim是終端下的vim,vim-gnome是用了GNOME GUI的vim,vim-tiny是tiny 版本的vim,就是功能比較少,但是體積小,速度快。
這裡我們可以按照提示輸入 sudo apt-get install vim 安裝vim。如果出現無法安裝vim,可以先更新一下源:$ sudo apt-get update,然後再安裝。如果還不行,見Ubuntu無法安裝vim:
2.安裝完成後,輸入vim會進入vim的標準模式,這時按鍵盤的i進入插入模式,在裡面寫點什麼吧。
3.按Esc推出插入模式,進入標準模式,在這個模式下有幾個基本命令要掌握。
- :wq 儲存推出
- i 進入插入模式
- x 刪除當前游標的字元
- dd 刪除當前行,並且儲存當前行到剪下板
- p 貼上
- :help <command> 檢視命令的幫助
- 上下左右移動游標
4. 輸入 :w filename 儲存檔案到當前目錄。這裡如果filename和之前不一樣的話可以算是vim對檔案的一個重新命名,例如 :w test.c。就會將內容儲存到test.c檔案中。
5. :q 退出vim頁面。
6.下次在該目錄下輸入 vim filename 就可以編輯或者檢視這個檔案了。如果沒有filename就會建立一個。
如果是想要編寫C語言程式碼,可能還需要以下基本命令:
1. 開啟資料夾:
$ cd 路徑
2. 用vi/vim/gedit開啟檔案:
$ vi 檔名
3. 進入root許可權:
$ su
4. 使用管理許可權做某事(用gedit開啟檔案):
$ sudo gedit sys.h
5. 拷貝檔案
$ cp 被拷貝檔案 目標地址
6. 用gcc編譯c檔案:
$ gcc 檔名 o 檔名(不帶有.c)
7. 執行編譯好的目標檔案:
$ ./檔名
8. 為了使make命令執行並行處理, j 選項可以用來指定作業數,如果你的電腦是多核
cpu,j後面的數字最大可以是 核數*2,說白了就是硬體砸得越多,速度越快。
$ make j4
初次學習這樣就差不多了,其他指令邊使用邊學習。
最後補充一下部落格園沐浴梓狼博主的部落格(寫的非常好):
vi編輯器是所有Unix及Linux系統下標準的編輯器,他就相當於windows系統中的記事本一樣,它的強大不遜色於任何最新的文字編輯器。他是我們使用Linux系統不能缺少的工具。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,學會它後,您將在Linux的世界裡暢行無阻。
vim 具有程式編輯的能力,可以以字型顏色辨別語法的正確性,方便程式設計;
因為程式簡單,編輯速度相當快速。
vim可以當作vi的升級版本,他可以用多種顏色的方式來顯示一些特殊的資訊。
vim會依據副檔名或者是檔案內的開頭資訊, 判斷該檔案的內容而自動的執行該程式的語法判斷式,再以顏色來顯示程式程式碼與一般資訊。
vim裡面加入了很多額外的功能,例如支援正則表示式的搜尋、多檔案編輯、塊複製等等。 這對於我們在Linux上進行一些配置檔案的修改工作時是很棒的功能。
1.vi/vim是什麼?
①vi是Visual Interface的縮寫,即 視覺化介面
②vim是vi iMprove的縮寫,即 vi的增強版(具有語法著色功能)
2.vim模式有哪些?如何切換?
①三種模式
命令模式(預設):剛進入vim的時候,預設就是 命令模式,可以複製行,刪除行等。
輸入模式:可以輸入內容。
末行模式:在最下邊,除編輯模式,可以輸入諸多管理員命令
②模式轉換
命令模式→輸入模式:
i:在當前游標所在字元的前面,轉為輸入模式
I:在當前游標所在行的行首轉換為輸入模式
a:在當前游標所在字元的後面,轉為輸入模式
A:在游標所在行的行尾,轉換為輸入模式
o:在當前游標所在行的下方,新建一行,並轉為輸入模式
O:在當前游標所在行的上方,新建一行,並轉為輸入模式
s:刪除游標所在字元
r:替換游標處字元
輸入模式→命令模式
ESC鍵
命令模式→末行模式
輸入:即可 轉為末行模式
在末行模式下
10d:可刪除第10行
10,20d:刪除10-20行
set nu:顯示行號
!命令:可以執行bash命令
末行模式→命令模式
ESC鍵
3.使用vim如何開啟檔案?
① vim /path/to/somefile :vim後跟檔案路徑及檔名 ,如果檔案存在,則開啟編輯檔案視窗,如果檔案不存在,則建立檔案
[[email protected] ~]# vim /etc/inittab
② vim + # :開啟檔案,並定位到第#行,#代表數字
[[email protected] ~]# vim +3 /etc/inittab
③ vim + :開啟檔案,定位到最後一行
[[email protected] ~]# vim + /etc/inittab
④ vim +/PATTERN:開啟檔案,定位到第一次被PATTERN匹配到的行的行首
[[email protected] ~]# vim +/start /etc/inittab
4.關閉檔案
末行模式下:
w:儲存
q:退出
wq 或 x:儲存退出,wq 和 x 都是儲存退出
q!:強制退出
w!:強制儲存,管理員才有許可權
命令模式下:
ZZ:儲存並退出
5.移動游標
命令模式下:
①逐字元移動
h:向左
l:向右
j:向下
k:向上
#h:移動#個字元
②以單詞為單位移動
w:移到下一個單詞的詞首
e:跳至當前或下一個單詞的詞尾
b:跳至當前或上一個單詞的詞首
#w:表示移動#個單詞
③行內跳轉
0:絕對行首
^:行首第一個非空白字元
$:絕對行尾
④行間跳轉
#G:跳轉到第#行
G:最後一行
末行模式下:
①行間跳轉
直接輸入行號 回車即可
6.翻屏:
命令模式下
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
7.刪除
命令模式下
①刪除單個字元:
x:刪除游標所在處單個字元
#x:刪除游標所在處及向後共#個字元
②刪除命令:d
d命令跟 跳轉命令組合使用 如:dw 表示刪除游標所在位置到下一個單詞詞首所有字元
#dw,#de,#db :#dw表示 刪除當前游標所在處及向後第#個單詞詞首所有字元
dd:刪除當前游標所在行
#dd:刪除包含當前游標所在行內的#行
末行模式下:
末行模式下 位置符號
StartADD,EndADDd
.:表示當前行
$:最後一行
+#:向下的#行
$-#:向上的#行
末行模式下,刪除命令d可以跟以上 位置符號 相結合使用
StartADD,EndADDd:刪除StartADD到EndADDd位置的所有行,例如:10,15d:刪除10到15行所有內容
.d:刪除游標所在行,同dd
8.貼上命令: p
p(小寫p):如果刪除的或複製的為整行內容,則貼上到游標所在行的下方,如果複製或刪除的內容為非整行,則貼上至游標所在字元的後面
P(大寫P):如果刪除的或複製的為整行內容,則貼上到游標所在行的上方,如果複製或刪除的內容為非整行,則貼上至游標所在字元的前面
9.複製命令:y
用法同d命令
命令模式
yy:複製當前行
yw (y#w,ye,y#e,yb,y#b):複製游標當前位置到下個單詞詞首內容.#代表數字
y#G:複製當前位置當#行處的所有內容
末行模式
StartADD,EndADDy:複製StartADD到EndADDd位置的所有行,例如:10,15d:複製10到15行所有內容
+3y:複製當前位置向下3行
10.修改c:先刪除內容,在轉換為輸入模式
c:用法同d
11.替換:r
r:單字元替換,會替換游標選中字元
R:替換模式,可以做字元替換。
12.撤銷編輯操作:u(undo)
u:撤銷前一次編輯操作
#u:直接撤銷#次操作
Ctrl+r:撤銷最近一次撤銷操作
13.重複前一次編輯操作.
.:比如 上一次dd刪除了一行,現在輸入.就可以重複dd刪除行的操作
14.視覺化模式:
命令模式:
v:按字元選取,鍵盤控制游標 劃過 的區域被選取
V:按矩形選取,鍵盤控制游標劃過的行被選取
15.查詢:
末行模式:
/PATTERN:從當前位置向後查詢
?PATTERN:從當前位置向前查詢
n:向下查詢
N:向上查詢
16.查詢並替換
在末行模式下使用s命令
ADDR1,ADDR2s/PATTERN/String/gi
ADDR1,ADDR2 表示地址;比如1,$表示全文 (%也表示全文)
g:表示全域性替換
i:表示忽略大小寫
17.vim開啟多個檔案
vim FILE1 FILE2 FILE3
末行模式下
:next 切換到下一個檔案
:prev 切換到上一個檔案
:last 切換到最後一個檔案
:first 切換到第一個檔案
退出多個檔案
qa:全部退出
18.分屏顯示一個檔案
vim開啟檔案後
Ctrl+w,s:水平拆分視窗
Ctrl+w,v:垂直拆分視窗
在視窗間切換游標
Ctrl+w,ARROW
比如 Ctrl+w,→:(使用箭頭方向鍵)游標切換到右邊的視窗
比如 Ctrl+w,h(左), j(下), k(上), l(右) 也可以切換視窗
在末行模式下
:qa退出所有視窗
19.分視窗編輯多個檔案
vim -o:水平分割顯示
vim -O:垂直分割顯示
例如:vim -o /etc/rc.sysinit /etc/inittab :水平分割顯示/etc/rc.sysinit和/etc/inittab 這2個檔案
20.將當前檔案中部分內容儲存為另外一個檔案
末行模式下
w:表示儲存當前檔案
w /path/to/somewhere:將當前檔案另存為到路徑指定的地方
ADDR1,ADDR2w /path/to/somewhere:將ADDR1到ADDR2指定的地址文字 另存為到路徑指定的地方
21.將另一個檔案的內容填充在當前檔案中(r表示讀)
末行模式下
r: /path/to/somefile
例如:vim /etc/rc.sysinit 開啟檔案後,末行模式 輸入 :r /etc/inittab :會將 inittab檔案的所有內容附加到rc.sysinit檔案游標所在的位置
22.跟shell互動(vim 末行模式執行shell)
末行模式
! command即可
例如: ! ls /etc/:會列出/ect目錄下所有檔案及目錄 按enter後回到vim編輯狀態
23.高階話題
在末行模式下
①顯示或取消行號
set nu(set number):顯示行號
set nonu:取消顯示行號
②顯示忽略或區分字元大小寫
set ic (set ignorecase):忽略大小寫
set noignorecase:區分大小寫
③設定自動縮排
set ai(set autoindent):自動縮排
set noai:取消自動縮排
④查詢到的文字高亮或取消高亮顯示
set hlsearch:高亮顯示搜尋到的文字
set nohlsearch:取消高亮顯示搜尋到的文字
⑤語法高亮
syntax on:開啟語法高亮顯示
syntax off:關閉語法高亮顯示
24.vim配置檔案
全域性vim配置檔案:/etc/vimrc
個人vim配置檔案:~/.vimrc
[[email protected] ~]# echo "set nu" >> /root/.vimrc # root使用者用vim開啟檔案時,顯示行號。
輸入以下命令修改配置檔案
sudo vim /etc/vim/vimrc
syntax on就是語法高亮,如果你的是off請改成on。
另外把游標移到檔案末尾,輸入以下配置(根據自己需要選擇)
colorscheme desert
" 設定配色為沙漠
" 其他可選: torte, solarized, molokai, phd, ron, evening等
set mouse=a " 設定可用滑鼠點選移動游標
set nu " 顯示行號
set nobackup " 覆蓋檔案時不備份
set autowrite " 自動儲存
set cursorline " 高亮顯示當前行
set tabstop=4 " 設定tab長度為4個空格
set softtabstop=4 " 設定軟tab長度為4個空格
set shiftwidth=4 " 設定縮排為4個空格
set expandtab " 將tab替換為空格
set autoindent " 設定自動縮排(對齊上一行)
set smartindent " 設定智慧縮排
set cindent " 設定c語言的縮排方式
set showmatch " 自動匹配
set ruler " 在右下角顯示當前行資訊
set incsearch " 搜尋加強
set hlsearch " 搜尋高亮
set ignorecase " 搜尋忽略大小寫
set whichwrap=b,s,<,>,[,] " 游標從行首和行末時可以跳到另一行去
set scrolloff=3 " 游標移動到上下兩端時保持3行距離
set history=1000 " 歷史記錄條數從20到1000
最後:wq
儲存並退出。
配置這段出自簡書博主望月時生,連結:https://www.jianshu.com/p/aed2a485af96 著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
也可以參考菜鳥教程學習 http://www.runoob.com/linux/linux-vim.html