1. 安裝
sudo apt-get install vim
或者
yum install
2. 具體使用技巧如下
- 打開檔案:
指令/操作 | 說明 |
vim + filename | 打開檔案并定位到最後一行 |
vim +5 filename | 打開檔案并定位到第5行 |
:edit /path/to/file | 在vim中打開檔案(支援Tab補全) |
- 移動光标:
指令/操作 | 說明 |
j | 向下移動一個實際行 |
gj | 向下移動一個螢幕行 |
k | 向上移動一個實際行 |
gk | 向上移動一個螢幕行 |
移動到實際行的行首 | |
g0 | 移動到螢幕行的行首 |
^ | 移動到實際行的第一個非空白字元 |
g^ | 移動到螢幕行的第一個非空白字元 |
$ | 移動到實際行的行尾 |
g$ | 移動到螢幕行的行尾 |
f+ | 查找下一個+(;下一個,上一個) |
w | 正向移動到下一單詞的開頭 |
b | 反向移動到目前單詞/上一單詞的開頭 |
e | 正向移動到目前單詞/下一單詞的結尾 |
ge | 反向移動到上一單詞的結尾 |
移動到行首 | |
$ | 目前行的末尾 |
gg/1G | 檔案第一行 |
G | 檔案最後一行 |
:7 | 定位到第7行 |
行号+G | 指定行 |
ctrl + o | 跳轉回之前的位置 |
ctrl + i | 傳回跳轉之前的位置 |
ctrl + U | 上翻頁 |
ctrl + D | 下翻頁 |
- 退出:
指令/操作 | 說明 |
ESC | 進入正常模式 |
:q! | 不儲存退出 |
:wq | 儲存後退出 |
:w | 僅儲存 |
:saveas file | 将檔案另存為file,但不退出 |
ZZ | 儲存後退出 |
ZQ | 不儲存退出,Q表示放棄 |
- 删除:
指令/操作 | 說明 |
x | 删除光标處的字元 |
nx | 删除光标所在處後的n個字元 |
dw | 删除光标之後單詞的剩餘部分(含光标處字元) |
cw | 同上,但最後進入插入模式 |
daw | 删除光标所在處的一個單詞 |
caw | 同上,但最後進入插入模式 |
d$ | 删除至目前行尾 |
dd | 删除整行 |
dG | 删除光标所在行到末尾行的所有内容 |
D | 删除光标所在處到行尾的内容 |
: 5,7d | 删除第5到第7行 |
2dd | 删除兩行 |
ggdG | 删除所有内容 |
:%d | 清空文檔(%表示所有行) |
:$d | 删除最後一行 |
:1,.-1d | 删除目前行之前的所有行 |
:.+1,$d | 删除目前行之後的所有行 |
:g/text/d | 删除包含text關鍵字的行 |
:v/#/d | 删除不包含#關鍵字的行 |
:g/^#/d | 删除以#開頭的的注釋内容 |
:g/^$/d | 删除所有空行 |
- 修改:
指令/操作 | 說明 |
i | 左邊插入文本 |
a | 有變插入文本 |
A | 目前行末尾添加 |
r | 替換目前字元(rc,将光标處字元替換為c) |
R | 進入替換REPLACE模式,可以連續完成替換 |
o | 打開新的一行并進入插入模式 |
Ctrl + a | 數字加一 |
Ctrl + x | 數字減一 |
vit | 可視模式下高亮選中标簽内部的内容(visually select inside the tag):U變大寫/u變小寫 |
- 列操作:
~ 删除列
1) 光标定位到要操作的地方。
2) CTRL+v 進入“可視 塊”模式,選取這一列操作多少行。
3)
~ 插入列
插入操作稍有差別。例如我們在每一行前都插入"() ":
1) 光标定位到要操作的地方。
2) CTRL+v 進入“可視 塊”模式,選取這一列操作多少行。
3) SHIFT+i 輸入要插入的内容。
4)
- 複制功能:
1) CTRL+v,進入列塊模式,選中需要複制的内容。
2) “y” 複制内容,4line yanked 說明複制了四行。
3) 然後移動光标到行首,“p”在光标的後面一列輸出内容,按“P”在光标前面一列輸出内容。
4)
- 撤銷:
指令/操作 | 說明 |
u | undo |
ctrl +r | redo |
. | 重複上一次操作 |
- 複制粘貼剪切:
指令/操作 | 說明 |
v | 進入可視模式(字元) |
V | 進入可視模式(行) |
y | 複制 |
p/P | 粘貼 |
yy | 複制目前行 |
dd | 剪切目前行 |
yG | 複制目前行直到最後一行 |
- 狀态:
指令/操作 | 說明 |
ctrl + g | 顯示目前行以及檔案資訊 |
- 查找:
指令/操作 | 說明 |
/ | 正向查找(n:繼續查找,N:相反方向繼續查找,/\c忽略大小寫。注意,不使用/\v時,必須轉義 (、 )、│ 、+、?、{、} 字元 |
? | 逆向查找(?\c忽略大小寫) |
% | 查找配對的 {,[,( |
* | 高亮顯示光标處單詞在檔案中的所有比對(n下一個比對,N上一個比對) |
:set ic | 忽略大小寫 |
:set noic | 取消忽略大小寫 |
:set hls | 比對項高亮顯示 |
:set nohl | 取消搜尋關鍵字的高亮(或者:noh) |
:set is | 顯示部分比對 |
:set nu | 顯示行号 |
:set nonu | 取消行号的顯示 |
:set list | 顯示不可視字元 |
:set nolist | 取消顯示不可視字元 |
:set background=dark | 設定深色背景 |
:set background=light | 設定亮色背景 |
:set all | 檢視vim的全部設定 |
:h magic | 通過關鍵字magic查詢幫助 |
注意:在查找指令" / "和“ ? ”後邊可以使用如下記号實作整字比對的查找。
/\<word\>
或者
?\<word\>
- 替換:
指令/操作 | 說明 |
:s/old/new | 替換該行第一個比對串 |
:s/old/new/g | 替換全行的比對串 |
:%s/old/new/g | 替換整個檔案的比對串(%表示所有行g表示所有列。注:\r是回車換行) |
:%s/old/new/gci | (選項:g global; i ignorecase; c confirmation; 次序無要求) |
- 折疊:
指令/操作 | 說明 |
zc | 折疊 |
zC | 折疊所有嵌套 |
zo | 展開折疊 |
zO | 展開所有折疊嵌套 |
- 解決在vim中粘貼代碼時縮進混亂問題:
:set paste
粘貼
:set nopaste
快捷鍵設定vim ~/.vimrc
set pastetoggle=<F12>
- 執行外部指令(文本處理):
指令/操作 | 說明 |
:!cmd | 執行外部指令 |
:.!date | vim中目前光标位置插入指令date的輸出結果 |
:r!date | vim中目前光标的下一行插入date的結果 |
:!python3 % | (%在指令模式中指目前檔案名) |
:shell | 開啟一個bash shell |
:2,$!sort -t, -k2nr | 把csv檔案内容從第二行到最後一行按第二列進行排序,且以,分割字段(-k2nr中n是數字排序,預設字元序,r是倒序) |
:1,$!cut -d, -f 2 │ sort -u | 把csv檔案中的第二列取出,排序,去重(1指第一行,$指最後一行,.指目前行) |
:1,$!sort -t, -k2 -u | 把csv檔案中的第二列排序并依據第二列的内容去重,行保留完整列(!G給出:.,$!) |
:.,$!sort -t. -k1n,1 -k2n,2 -k3n,3 -k4n,4 -u | 從目前行到最後一行對IPv4位址排序并去重 |
:1,$!cut -d. -f4 -s | 從第一行到最後一行,以.為字段分割符,投影第4列,且不輸出不包含分隔符的行 |
:1,$!sed -n ‘n;p’ | 輸出偶數行 |
:1,$!sed -n ‘p;n’ | 輸出奇數行 |
:1,$!awk ‘1; { print “” }’ | 兩行間插入一個空行 |
注:
awk 'NR%2==0{print a"="$0}{a=$0}' test6.txt 讓“奇數行=偶數行”
seq 10 産生1~10的序列(每行)
paste test7.txt test8.txt | tr "\t" "\n"
- 多視窗的切換:
指令/操作 | 說明 |
〈C-w〉w | 在視窗間循環切換 |
〈C-w〉h | 切換到左邊的視窗 |
〈C-w〉j | 切換到下邊的視窗 |
〈C-w〉k | 切換到上邊的視窗 |
〈C-w〉l | 切換到右邊的視窗 |
:q | 關閉目前視窗 |
:close | 關閉目前視窗,但不能關閉最後一個視窗 |
- 标簽頁:
指令/操作 | 說明 |
:tabedit test.csv | 打開檔案到一個标簽頁 |
gt | 切換到下一标簽頁 |
gT | 切換到上一标簽頁 |
:close | 關閉目前标簽頁 |
- 顯示目前目錄:
指令/操作 | 說明 |
:pwd | 顯示目前路徑 |
:e. | 打開目前目錄 |
-
Tab設定
在~/.vimrc中添加以下代碼後,重新開機vim即可實作按TAB産生4個空格:
set ts=4
set
對于已經儲存的檔案,将Tab替換為空格,執行如下指令:
:set ts=4
:set expandtab
:%retab!
加!是用于處理非空白字元之後的TAB,即所有的TAB,若不加!,則隻處理行首的TAB。
- 顯示目前行的不可顯字元
:l
在指令顯示區将顯示目前行的所有不可顯字元。
在插入模式下“-- INSERT --”
Ctrl + v + 【功能鍵】
可以産生不可顯字元。
-
檔案加密
必須在建立檔案的時候就進行密碼設定,加密才起效。
查詢加密方式
:help 'cm'
設定加密方法
:setlocal cm=blowfish2
:X
$ vim
- 将windows下編輯的文本轉換為unix格式(比如回車換行)
: set ff=unix
- 檢視檔案編碼
:set fileencoding
-
快速格式化
ESC gg=G