vim常用快捷鍵及操作記錄


1. 安裝

sudo apt-get install vim
或者
yum install -y vim-enhanced

2. 具體使用技巧如下

  • 打開文件:
命令/操作 說明
vim + filename 打開文件並定位到最后一行
vim +5 filename 打開文件並定位到第5行
:edit /path/to/file 在vim中打開文件(支持Tab補全)
  • 移動光標:
命令/操作 說明
j 向下移動一個實際行
gj 向下移動一個屏幕行
k 向上移動一個實際行
gk 向上移動一個屏幕行
0 移動到實際行的行首
g0 移動到屏幕行的行首
^ 移動到實際行的第一個非空白字符
g^ 移動到屏幕行的第一個非空白字符
移動到實際行的行尾
g$ 移動到屏幕行的行尾
f+ 查找下一個+(;下一個,上一個)
w 正向移動到下一單詞的開頭
b 反向移動到當前單詞/上一單詞的開頭
e 正向移動到當前單詞/下一單詞的結尾
ge 反向移動到上一單詞的結尾
0 移動到行首
$ 當前行的末尾
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 清空文檔(%表示所有行)
  • 修改:
命令/操作 說明
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) d或x 刪除。

~ 插入列

插入操作稍有區別。例如我們在每一行前都插入"() ":
1) 光標定位到要操作的地方。
2) CTRL+v 進入“可視 塊”模式,選取這一列操作多少行。
3) SHIFT+i 輸入要插入的內容。
4) ESC 按兩次,會在每行的選定的區域出現插入的內容。
  • 復制功能:
1) CTRL+v,進入列塊模式,選中需要復制的內容。
2) “y” 復制內容,4line yanked 說明復制了四行。
3) 然后移動光標到行首,“p”在光標的后面一列輸出內容,按“P”在光標前面一列輸出內容。
4) 大小p的區別是黏貼內容的區域是所選擇光標的前面還是后面一列。
  • 撤銷:
命令/操作 說明
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\>
  • 替換:
命令/操作 說明
😒/old/new 替換該行第一個匹配串
😒/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"  將兩個文件的所有行交錯合並(paste為coreutils軟件包,用於文件的列合並)
  • 多窗口的切換:
命令/操作 說明
〈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 expandtab

對於已經保存的文件,將Tab替換為空格,執行如下命令:

:set ts=4
:set expandtab
:%retab!

加!是用於處理非空白字符之后的TAB,即所有的TAB,若不加!,則只處理行首的TAB。

  • 顯示當前行的不可顯字符
:l

在命令顯示區將顯示當前行的所有不可顯字符。
在插入模式下“-- INSERT --”
Ctrl + v + 【功能鍵】
可以產生不可顯字符。

  • 文件加密
    必須在新建文件的時候就進行密碼設置,加密才起效。

查詢加密方式

:help 'cm'

設置加密方法

:setlocal cm=blowfish2

設置密碼

:X

在命令行中打開文件並設置密碼

$ vim -x file.txt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM