天天看點

vim常用快捷鍵及操作記錄

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