vim 常用命令,會持續更新

================入坑 vim 學習筆記 ============

================ 移動 ===============

jkhl 上下左右

單詞之間移動
e 移動到下一個單詞尾部
w 移動到下一個單詞頭部
b/B 移動到上一個單詞頭部

2e 向後移動兩個單詞到尾部
2w 向後移動兩個單詞到頭部
0 直接移動到行尾
$ 直接移動到行首
^ 直接移動到行首第一個非空白字符
g_ 直接移動到行尾的非空白字符

G 移動到當前文件尾部
gg 移動到當前文件頭部

ctrl + o 返回上次編輯的地方

24gg  跳轉到 行號爲24 的位置

H 跳轉到文件開頭
M 跳轉到文件中間
L 跳轉到文件尾部

:q 退出
:qa 退出所有窗口
:q! 強制退出
:w 保存
:wq 保存並退出


=========== 翻頁 ===============

ctrl + u 向下翻頁
ctrl + f 向上翻頁
zz 將光標位置移動到屏幕中間

=========== 快速跳轉到單詞字符 ============

fm 跳轉到當前行的 第一個以m 開頭的單詞的字符上
tm 跳轉到當前行的 第一個以m 開頭的單詞的字符前
;, 可以用來切換上一個下一個
Fm 從行尾向前搜索, ;, 用來切換上一個下一個

============= 進入編輯模式 =============

a 當前光標所在位置後邊插入
i 當前光標所在位置前插入
o 當前光標所在行下邊插入
A 當前行末尾插入
I 當前行開頭插入
O 當前行上邊插入

============= v 進入可視模式 ==============

v 或者 V 都可以進入可視化模式
切換方向鍵,可以選中文字。也可以使用 e w 鍵進行選中然後輸入d 進行刪除操作,也可以進行其他操作
V 選中光標所在整行,切換方向鍵,可以選中,然後操作,或者 y 複製,p 粘貼
ctrl + v 然後切換方向鍵,進行方塊選擇

====================== 插入模式下技巧==================

編輯模式下不用按esc退出編輯模式,可以直接使用:

ctrl + h 刪除上一個字符
ctrl + w 刪除上一個單詞
ctrl + u 刪除一整行

gi 命令可以再編輯完成後,退出到normal模式後,光標移動到其他位置,然後輸入gi 快速回到上次編輯的位置

====================== 刪除 ====================

dd 刪除一整行
dw 刪除一個單詞
x 刪除一個字符
2x 刪除兩個字符

r 替換當前光標位置的字符
R 以當前光標位置爲起始,開始替換字符

s 刪除當前字符,並進入 insert 模式
S 刪除整行

cw 刪除單詞,
所有被刪除的內容都會暫時存放到寄存器,移動光標後 按 p 可以粘貼到其他地方去 

====================== 複製 ====================

yy 可以複製一行 
yiw 複製一個單詞
v + jkhl + y 複製多行
V + jkhl + y 複製多行
ctrl + v + jkhl + y 複製多塊
"+ 訪問系統剪切板,吧內容複製到 系統剪切板,然後在vim 外部粘貼內容
如果從外部複製的內容粘貼到vim 使用 " + p 粘貼
如果從外部複製的內容粘貼到vim 比較麻煩,可以使用
:set clipboard=unnamed 設置以後,可以直接按 p 就能直接粘貼到vim 操作的文件中
在insert 模式下粘貼的話 ctrl + R + 加號, 可以粘貼進去

====================== 替換 =====================

:s/old/new/g  當前行內的所有old 替換成new
:% s/old/new/g 當前文件內所有 old 替換成new
:1,4 s/old/new/g 1--4 行內所有的old 替換成new(在範圍內替換)
:1,4 s/old//n 統計1--4行內old 單詞出現的總次數
:% s/\<index\>/home/g 通過正則表達式替換匹配,index 開頭的單詞
:/old 回車,查找當前文件中的所有old 單詞,輸入 :set hls 可以設置高亮。

======================= 搜索 ==================

:/world 搜索 world 單詞 然後輸入n / N 用來匹配尋找上一個下一個
:set hls 設置檢索高亮

====================== 切換到normal 模式 =================

Esc
ctrl + c (有可能會中斷一些其他插件,或者進程,不建議使用)
ctrl + [ 

====================== Buffer window Tab ===============

Buffer 就是vim 打開文件後,文件會保存到內存中的一個緩衝區,我們改動的內容不會真正的保存,是暫時保存在緩衝區內,等輸入 :w 後纔會真正保存
vim a.txt 打開 a.txt 文件,在a.txt 內輸入 :e b.txt 就會同時打開ab.txt 兩個文件, :ls 可以查看當前窗口中打開了幾個文件,也就是打開了幾個緩衝區。
:b 1 就是切換到第一個緩衝區,也就是a.txt 文件 :b 2 就是切換到第二個緩衝區 b.txt 文件 
:e filename 就是打開一個新的緩衝區 
:b Buffername 就是切換緩衝區

window 就是窗口的可視化區域
:vs 垂直分割
:sp 水平分割
ctrl + w + w 循環切換窗口
ctrl + w + j 向下切換窗口
ctrl + w + k 向上切換窗口
ctrl + w + h 向左切換窗口
ctrl + w + l 向右切換窗口

在當前窗口中輸入 :e b.txt 打開b.txt 文件
ctrl + w + L 切換窗口內容

Tab 的不常用,沒有記

====================== object text 文本對象操作 ==========

vaw 選中文本對象(單詞)以及後邊的空格
viw 選中文本對象(單詞)不包含空格 

cd 從光標位置 刪除單詞
daw 刪除單詞和後邊的空格
vi" 選中雙引號中的單詞 選中後 x 可以刪除
ci" 直接刪除雙引號中的單詞,不管光標在雙引號中的哪裏

v 是指的可視化模式,選中狀態,
i 表示 insert 插入模式," 表示要選中的位置
c 指的是 change 修改,

====================== 宏命令 ==================

宏的概念: 宏可以看成是一系列命令的集合,
我們可以通過宏 錄製 一系列的操作,然後回放。
宏可以非常方便的把一系列命令用在多行文本上。
使用: 我們使用 q 來開始錄製,使用 q 結束錄製
q{register} 選擇要保存的寄存器,把錄製的命令保存其中,比如 qa 把命令保存到名稱a 的寄存器中。
使用 @{register} 來回放寄存器衝保存的一系列命令。 比如 @a 開始回放

使用V選中一行,然後上下移動選中多行或者G選中剩下的所有文件然後 :normal @a 回車,自動批量執行。

如果要批量在一個文件中插入 100 行相同的代碼,也可以使用宏:
先在normal 模式下 按下 qa 開始錄製,並且把錄製的操作存到a寄存器中,
然後 i insert 模式 開始寫代碼<a>我是a標籤</a> 然後回車
然後esc 退出insert模式,q 結束錄製,

按下 100@a 會自動插入.
按下 @a 是使用一次錄製的操作,
前邊輸入100 表示執行100次

===================== 自動補全 ==================

ctrl + n 出現過的代碼補全,比如輸入 w 按下 ctrl + n 就會出現當前文件中出現的 w 開頭的單詞
ctrl + f 引入文件名的補全, 比如輸入 ./w 按下 ctrl + f 就會出現當前目錄下 w 開頭的文件列表

===================== 批量開頭結尾操作 ===========

比如開頭結尾都加 " 引號

V選中一行,然後G 移動到文件底部並且選中,然後 :normal I"  I"是開頭插入"
V選中一行,然後gg 移動到文件頭部並選中, 然後 :normal A"  A"是結尾插入"

====================== 分屏打開多個文件 =========

vim a.js b.js -O 就會分屏打開兩個文件。

====================== 設置命令==================

:set number 設置行號
:syntax on 設置代碼高亮

====================== 設置vim 主題 =================

當前文件中 :colorscheme 顯示當前使用的主題顏色,默認是default。
輸入 :colorscheme <ctrl + d> 顯示所有主題
輸入 :colorscheme blue (主題名) 使用主題。

從網上下載別人的主題:

google 搜索 vim colorschemes 會找到很多vim 的主題配置文件,隨意點擊一個進去

然後iTerm 終端切換到 ~ 目錄下, git clone 下來主題庫, 比如主題庫名稱是 vim-hybrid 
然後查看 ls ~/.vim/ 下是否有colors 文件,如果沒有 mkdir ~/.vim/colors 創建一個colors 文件夾。這個文件就是用來存放vim主題的。
然後通過 cp ./vim-hybrid/colors/hybrid.vim ~/.vim/colors 然後回車 把文件拷貝到~/.vim/colors 文件中
然後vim 打開一個文件夾 輸入:colorscheme <ctrl + d> 查看所有主題中是否有 hybrid 主題,有的話說明主題已經被讀取到,
使用 :colorscheme hybrid 回車可以使用hybrid 主題了。
上邊的是使用colorscheme 命令臨時使用,關閉文件後主題會自動回到default 主題。後邊會寫使用 .vimrc 文件持久配置。

===================== 基本映射 ====================

使用map 可以實現映射,比如:map - x 然後按 - 就可以實現刪除字符
:map <space> viw 使用空格就可以選中一個單詞 ,viw 是選中單詞的命令
:map <c-d> dd 使用ctrl + d 就可以實現 dd 刪除一行的操作。

===================== 模式映射 ===================

vim 常用模式 normal/visual/insert 都可以實現映射
用 nmap/vmap/imap 定義映射只在normal/visual/insert 分別有效
使用 vmap \ U 定義visual 模式下選中單詞後按下 \ 可以吧小寫轉換成大寫。
u 可以轉換會小寫。 

但是 nmap/vmap/imap 這種系列的映射有遞歸的風險,也就是有可能會衝突
比如 :nmap - dd :nmap \ - 這樣設置以後,我們按下 \ 以後,映射會追溯到最底層的映射 dd 命令上,執行刪除一行操作。- 按下也會執行 dd 操作,這樣:nmap \ - 映射就失效了。

爲了避免遞歸映射風險,發生映射衝突,建議使用非遞歸映射:
*map 改成 nnoremap/vnoremap/inoremap   nore代表的是非遞歸。
任何時候都應該使用非遞歸映射,無論是對自己,還是對插件都會更友好,避免衝突。

這裏推薦一本書,笨方法歇息vim https://www.kancloud.cn/kancloud/learn-vimscript-the-hard-way/49321 
書中的配置特別全。可以用來查詢

====================== 更改.vimrc 文件後更新文件 ============

:source ~/.vimrc
或者重新進入vim

這些命令都是通過學習下邊的課程做記錄學習到的,
課程連接
感興趣的同學可以學習下。
此博客以後還會繼續更新vim 常用命令。
如果其他同學有更好的命令,可以再下邊留言我,寫的不對的地方也歡迎拍磚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章