源代碼下載: LearnVim-cn.txt
Vim
(Vi IMproved) 是 Unix 上的流行編輯器 vi 的克隆版本。這個文本編輯器
是為性能和提升效率而設計的,並且在大多數基於 unix 的系統上普遍存在。
它有大量的快捷鍵可用來快速導航到文件的特定位置,以便進行快速編輯。
Vim 導航基礎
vim <filename> # 在 Vim 中打開 <filename>
:q # 退出 Vim
:w # 保存當前文件
:wq # 保存文件並退出 Vim
:q! # 退出 Vim 並且不保存文件
# ! *強制* 執行 :q, 因此沒有保存就退出 Vim
:x # 保存文件並且退出 Vim, 是 :wq 的簡寫版本
u # 撤銷
CTRL+R # 重做
h # 左移一個字符
j # 下移一行
k # 上移一行
l # 右移一個字符
# 在行內移動
0 # 移到行首
$ # 移到行尾
^ # 移到行內的第一個非空白字符處
# 在文本中查找
/word # 光標之後的所有該詞都高亮顯示
?word # 光標之前的所有該詞都高亮顯示
n # 查找後將光標移到該詞的下一個出現位置
N # 光標移到該詞的上一個出現位置
:%s/foo/bar/g # 將文件每一行上的所有 'foo' 都改成 'bar'
:s/foo/bar/g # 將當前行上的所有 'foo' 都改成 'bar'
# 跳到字符處
f<字符> # 向前跳移到 <字符> 上
t<字符> # 向前跳移到 <字符> 的左側
# 例如,
f< # 向前跳移到 < 上
t< # 向前跳移到 < 的左側
# 按詞移動
# 默認一個單詞由字母,數字和下劃線組成
w # 移動到下一個詞首
b # 移動到前一個詞首
e # 移動到下一個詞尾
# 移動的其它命令
gg # 移到文件頂部
G # 移到文件末尾
:NUM # 移到第 NUM 行 (NUM 是任意數字)
H # 移到屏幕頂部
M # 移到屏幕中間位置
L # 移到屏幕末尾
模式:
Vim 基於 模式 這個概念。
命令模式 - Vim 啓動後就處於這個模式,用於導航和操作命令
插入模式 - 用於在你的文件中進行修改
可視模式 - 用於高亮文本並對它們進行操作
Ex 模式 - 用於跳到底部的 ':' 提示行上輸入命令
i # 在光標位置前,將 Vim 切換到插入模式
a # 在光標位置後,將 Vim 切換到插入模式
v # 將 Vim 切換到可視模式
: # 將 Vim 切換到 ex 模式
<esc> # 無論你當前處於什麼模式,都返回到命令模式
# 複製和粘貼文本
y # 複製所選的內容
yy # 複製當前行
d # 刪除所選的內容
dd # 刪除當前行
p # 在當前光標位置後粘貼複製的文本
P # 在當前光標位置前粘貼複製的文本
x # 刪除當前光標位置處的字符
Vim 的 '語法'
Vim 可以被認為是按 '動詞-修飾詞-名詞' 格式編排的一組命令:
動詞 - 你的動作
修飾詞 - 你如何執行你的動作
名詞 - 你的動作所作用於的對象
關於 '動詞','修飾詞',和 '名詞' 的幾個重要例子:
# '動詞'
d # 刪除
c # 修改
y # 複製
v # 可視化選擇
# '修飾詞'
i # 內部的
a # 周圍的
NUM # 數字 (NUM 是任意數字)
f # 查找文本並位於其上
t # 查找文本並停於其前面
/ # 從光標處開始查找字符串
? # 在光標前查找字符串
# '名詞'
w # 詞
s # 句子
p # 段落
b # 塊
# 示例 '語句' 或命令
d2w # 刪除 2 個詞
cis # 修改段落內的內容
yip # 複製段落內的內容 (複製你所在的段落)
ct< # 修改直到括號開啓處
# 對你的當前位置直到下個括號開啓處的內容進行修改
d$ # 刪除直到行尾
一些快捷鍵和技巧
<!--TODO: Add more!-->
> # 將所選內容縮進一級
< # 將所選內容取消縮進一級
:earlier 15m # 將文檔還原到 15 分鐘前的狀態
:later 15m # 逆轉上述命令
ddp # 相鄰行交換位置,先 dd 再 p
. # 重複之前動作
宏
宏基本上來説就是可錄製的動作。
當你開始錄製宏時,它會記錄你使用的 每個 動作和命令,
直到你停止錄製。當調用宏時,它會將這個完全相同的動作和命令序列
再次應用於所選文本之上。
qa # 開始錄製一個叫 'a' 的宏
q # 停止錄製
@a # 重播宏
配置 ~/.vimrc
.vimrc 可用於在啓動時對 Vim 進行配置。
這裏是一個示例 ~/.vimrc 文件:
" 示例 ~/.vimrc
" 2015.10
" 需要 Vim iMproved 版本
set nocompatible
" 根據文件名檢測文件類型,以便能進行智能自動縮進等操作。
filetype indent plugin on
" 開啓語法高亮
syntax on
" 更好的命令行補全
set wildmenu
" 除了當使用大寫字母時使用大小寫無關查找
set ignorecase
set smartcase
" 當新開一行時,如果沒有開啓文件特定的縮進規則,
" 則縮進保持與你當前行一致
set autoindent
" 在左側顯示行號
set number
" 縮進選項,根據個人偏好進行修改
" 每個 TAB 的可視空格數
set tabstop=4
" 編輯時 TAB 對應的空格數
set softtabstop=4
" 當使用縮進操作 (>> 和 <<) 時縮進的空格數
set shiftwidth=4
" 將 TAB 轉換成空格
set expandtab
" 為縮進和對齊開啓智能化的 TAB 和空格切換功能
set smarttab
參考
Vim | Home
$ vimtutor
A vim Tutorial and Primer
What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)
Arch Linux Wiki
有建議?或者發現什麼錯誤?在Github上開一個issue,或者發起pull request!
原著RadhikaG,並由0個好心人修改。
© 2022 RadhikaG
Translated by: Jiang Haiyun
本作品採用 CC BY-SA 3.0 協議進行許可。