一缀磕、命令行文本操作快捷鍵
1. Mac文本操作通用快捷鍵
Ctrl + A 跳至行首
Ctrl + E 跳至行尾
Ctrl + F 前進一個字符
Ctrl + B 后退一個字符
Ctrl + H 回刪一個字符
Ctrl + D 刪除當前字符
Ctrl + K 刪除至行尾
2. iterm專用Ctrl系列快捷鍵
Ctrl + W 回刪一個單詞
Ctrl + Q 清空當前行酝锅,等待下條命令運行完畢旧烧,自動將剛才清空的命令顯示出來
Ctrl + U 剪切一行
Ctrl + Y 粘貼一行
Ctrl + C/G 保留當前命令赦抖,新建一行
Ctrl + S 后向命令搜索
Ctrl + R 前向命令搜索
Ctrl + L 清屏
Ctrl + P 上翻歷史命令
Ctrl + N 下翻歷史命令
Ctrl + x + e 進入vim編輯當前命令
3. iterm專用Option系列快捷鍵
需要設(shè)置iterm的profile,將Option鍵設(shè)置為Esc
Option + F前進一個單詞
Option + B后退一個單詞
Option + D刪除一個單詞
Option + W刪除到行首
Option + . 自動補全上一條命令的最后一個參數(shù)
4. 其他Tips
- d 顯示歷史跳轉(zhuǎn)目錄,然后按相應(yīng)數(shù)字鍵進行跳轉(zhuǎn)目錄
? index git:(master) d
0 ~/work/index
1 ~/work/casa-listing-service
2 /usr/local/etc/nginx
- r {target}={replace} 重復(fù)上條命令 并替換掉上條命令部分字符尤辱;參數(shù)為空時奔则,重復(fù)執(zhí)行上條命令
? ~ echo casa
casa
? ~ r casa=myfun
echo myfun
myfun
- ack 文件內(nèi)容快速搜索
- cmd+\ 顯示光標位置
二腌闯、Vim入坑指南
主流編輯器的學習曲線圖
一旦你意識到Vim的強大,你就踏上了不停發(fā)掘它們潛力的漫漫長路樟遣。你不停地改進自己的配置文件而叼,你不停地搜索更好的插件,甚至有一天你開始動手寫自己的插件豹悬。就像劍客保養(yǎng)自己的劍一樣葵陵,你也甘心花時間提升你的Vim。經(jīng)年累月瞻佛,不知不覺脱篙,你已經(jīng)在那把劍上傾注了你的靈魂。
用Vim就像吸食毒品伤柄,慢慢地就會上癮绊困。它會帶給你漸漸強烈的快感,但你也向它獻出了自己的靈魂适刀。這時秤朗,你只能稱它為神器。
Real Vim ninjas count every keystroke.
vimgolf put 576c778ea4896a561b01b4f2
1. 更好的操作習慣
- ZZ ==
:x == :wq - Ctrl + [ ==
ESC - hjkl ==
(←↓↑→) - . : 重復(fù)執(zhí)行上次的修改
- u : undo
- Ctrl + r : redo
2. 普通(normal)模式
(1)移動(Motion)
普通移動:
hjkl :←↓↑→
+ : 跳轉(zhuǎn)至下一行非空行首
- : 跳轉(zhuǎn)至上一行非空行首
^ :跳轉(zhuǎn)至當前行非空行首
0 : 跳轉(zhuǎn)至行首
$ : 跳轉(zhuǎn)至行尾
e : 跳轉(zhuǎn)至單詞尾部
ge : 反向跳轉(zhuǎn)至單詞尾部
w : 正向跳轉(zhuǎn)至單詞頭部
b : 反向跳轉(zhuǎn)至單詞頭部
}/): 正向跳轉(zhuǎn)至段落尾部(有差別)
{/(: 反向跳轉(zhuǎn)至段落尾部(有差別)
gg : 跳轉(zhuǎn)至首行
G : 跳轉(zhuǎn)至尾行
M : 跳轉(zhuǎn)中間行
% : 在開閉標簽內(nèi)跳轉(zhuǎn)() {} [] <>
行級查找移動:
f{char} : 將光標正向移動到{char}上
F{char} : 將光標反向移動到{char}上
t{char} : 將光標正向移動到{char}前
t{char} : 將光標反向移動到{char}后
; : 重復(fù)上次移動
, : 回退上次移動
全文查找移動:
/{target} : 查找文本
n : 正向跳轉(zhuǎn)
N : 反向跳轉(zhuǎn)
* : 查找光標所在單詞的下一處
標簽移動
m{a-zA-Z} : mark標記
`{標記符} : 跳轉(zhuǎn)至相應(yīng)標記
默認標記:
`` : 跳轉(zhuǎn)之前的位置(Ctrl + o)
`. : 上次修改的地方
`^ : 上次插入的地方
`[ : 上次修改或復(fù)制的起始位置
`[ : 上次修改或復(fù)制的結(jié)束位置
`< : 上次高亮選區(qū)的起始位置
`> : 上次高亮選區(qū)的結(jié)束位置
(2)文本操作(Action)
使能文本操作(Do-Action):
d : delete
y : yank/copy
c : change
即時文本操作(Instant-Action):
前:光標前笔喉;后:光標后
p : (后)put/paste
P : (前)put/paste
x : (后)刪除字符
X : (前)刪除字符
s : 刪除字符并進入插入模式
S : 刪除當前行并進入插入模式
r : 替換當前字符
R : 連續(xù)替換輸入字符
Y=yy : 復(fù)制當前行
dd : 刪除當前行
D=d$ : 刪除至行尾
C=c$ : 修改至行尾
o : 在當前行下插入一行
O : 在當前行上插入一行
J : join將下一行與當前行連起來
. : 重復(fù)上傳修改
(3)文本對象(Object)
分隔符文本對象
(
{
[
<
"
'
`
t(tag標簽)
范圍文本對象
w : word
W : String
s : sentence
p : paragraph
文本對象范圍(Range)
i : inside
a : around
(4) 普通模式命令語法
-
{n}{Instant-Action}
5dd : 刪除五行
5p : 將寄存器的內(nèi)容在光標后粘貼5遍
5x : 正向刪除5個字符
-
{n}{Do-Action}{Motion} or {Do-Action}{n}{Motion}
2dl(d2l) : 正向刪除2個字符
2cw(c2w) : 正向刪除兩個單詞并進入插入模式
-
{n}{Do-Action}{Range}{Object} or {Do-Action}{n}{Range}{Object}
3daw(d3aw) : 正向刪除三個單詞(包括單詞后面的空格)
ciw(ciw) : 正向刪除一個單詞(不包括空格)并進入插入模式
3. 可視(Visual)模式
可視模式命令(Vcmd):
- v :激活或者關(guān)閉面向==字符==的可視模式
- V :激活或者關(guān)閉面向==行塊==的可視模式
- Ctrl + v :激活或者關(guān)閉面向==列塊==的可視模式
- gv :重選上次選擇區(qū)域
- o :切換高亮區(qū)域選擇端
慣用用法
- {Vcmd}{n}{Motion}{Action}
v3jd: 向下選中3行刪除
v3lp: 向右選擇3個字符剪切掉取视,然后將寄存器的值粘貼
- {Vcmd}{n}{Range}{Object}{Action}
v2iwd :正向選擇兩個單詞刪除
建議:盡可能使用普通模式命令操作文本,除非迫不得已然遏。
4.插入(Insert)模式
(1) 普通模式切入插入模式
i : (前)insert
I : 在行首插入
a : (后)append
A : 在行尾插入
(2) 文本操作快捷方式
Ctrl + h : 回刪一個字符
Ctrl + w : 回刪一個單詞
Ctrl + u : 回刪至行首
Ctrl + r + " : 快速將默認寄存器中的值粘貼
(3) 快速切換普通模式
Ctrl + [ : Esc
Ctrl + o : 從插入模式切換到普通模式贫途,執(zhí)行一條命令后自動切換回插入模式
5.寄存器
"{Register} : 引用寄存器
"ayy // 將當前行復(fù)制到a寄存器中
"ap // 普通模式下將a寄存器的內(nèi)容粘貼出來
Ctrl + r + a // 插入模式下將a寄存器的內(nèi)容粘貼出來
常用寄存器
- "" : 默認寄存器,執(zhí)行任何{Action}都是對該寄存器操作
- "0 : 復(fù)制專用寄存器待侵,執(zhí)行y命令后丢早,會同時將文本存儲在""和"0中,其他操作則只會存儲在""
- "{1-9} : 壓棧寄存器:每執(zhí)行一次==刪除/修改Action==后會將""中的內(nèi)容壓入其中
- "{a-z} : 有名寄存器
- "_ : 黑洞寄存器
- "*/+ : 系統(tǒng)剪切板寄存器
- “= : 表達式寄存器
6.命令(Command)模式
命令行模式是VIM繼承自老祖先ed ex的遺產(chǎn),有著相當強大的功能怨酝。
普通模式適合近距離作戰(zhàn)傀缩,命令模式適合遠距離作戰(zhàn)。
:1,5t$ //將第一行到第五行拷貝到最后一行
(1)行[line]
n : 絕對行
. : 當前行
.+(-)n : 當前行向下(上)偏移n行
$ : 最后一行
% : 所有行
‘< : 高亮區(qū)域起始行
‘> : 高亮區(qū)域結(jié)束行
(2)范圍[Range]
[StartLine,EndLine]
可以進入視圖模式選中行农猬,然后進入命令模式赡艰,會默認選中其高亮部分
(3)操作命令
: [range] delete/d [x] 將選定區(qū)間的行刪除 并寄存到x中
: [range] yank/y [x] 將選定區(qū)間的行復(fù)制 并寄存到x中
: [line] put [x] 將選定寄存器x中數(shù)據(jù)粘貼到指定行下
: [range] join /j 將選定行連接
: [range] t [line] 將選定區(qū)間行的內(nèi)容復(fù)制到指定地址
: [range] move/m [line] 將選定區(qū)間行的內(nèi)容移動到指定地址
: [range]s/target/repalce 替換指定行內(nèi)的target到replace
: [range]normal[NormalCmd] 在指定行內(nèi)執(zhí)行普通模式的命令
可以用"|"來連接多條命令,一起執(zhí)行
:1m$|$-1m0 // 將第一行和尾行互換
7.宏
宏用于對一系列相似的行斤葱、段落慷垮、文件進行重復(fù)性的修改。
宏可以把任意數(shù)目的按鍵操作錄制到寄存器揍堕,用于之后的回放料身。
宏命令
qa //將宏錄制到a寄存器中
q // 結(jié)束本次宏的錄制
:reg a // 查看宏的內(nèi)容
{n}@a // 串行的將a寄存器中的宏執(zhí)行n遍
:[range]normal @a//并行的將宏在選擇的文本上執(zhí)行
qA // 可以給宏追加命令