以思維的速度編輯文本-快捷鍵&Vim

一缀磕、命令行文本操作快捷鍵

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入坑指南

image

主流編輯器的學習曲線圖

一旦你意識到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) 普通模式命令語法

  1. {n}{Instant-Action}

5dd : 刪除五行
5p : 將寄存器的內(nèi)容在光標后粘貼5遍
5x : 正向刪除5個字符

  1. {n}{Do-Action}{Motion} or {Do-Action}{n}{Motion}

2dl(d2l) : 正向刪除2個字符
2cw(c2w) : 正向刪除兩個單詞并進入插入模式

  1. {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 // 可以給宏追加命令

8 推薦資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衩茸,隨后出現(xiàn)的幾起案子芹血,更是在濱河造成了極大的恐慌,老刑警劉巖楞慈,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幔烛,死亡現(xiàn)場離奇詭異,居然都是意外死亡囊蓝,警方通過查閱死者的電腦和手機饿悬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聚霜,“玉大人乡恕,你說我怎么就攤上這事「┪” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵运杭,是天一觀的道長夫啊。 經(jīng)常有香客問我,道長辆憔,這世上最難降的妖魔是什么撇眯? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮虱咧,結(jié)果婚禮上熊榛,老公的妹妹穿的比我還像新娘。我一直安慰自己腕巡,他們只是感情好玄坦,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般煎楣。 火紅的嫁衣襯著肌膚如雪豺总。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天择懂,我揣著相機與錄音喻喳,去河邊找鬼。 笑死困曙,一個胖子當著我的面吹牛表伦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慷丽,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼蹦哼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盈魁?” 一聲冷哼從身側(cè)響起翔怎,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杨耙,沒想到半個月后赤套,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡珊膜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年容握,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车柠。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡剔氏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竹祷,到底是詐尸還是另有隱情谈跛,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布塑陵,位于F島的核電站感憾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏令花。R本人自食惡果不足惜阻桅,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兼都。 院中可真熱鬧嫂沉,春花似錦、人聲如沸扮碧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尤揣,卻和暖如春搔啊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背北戏。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工负芋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗜愈。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓旧蛾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蠕嫁。 傳聞我的和親對象是個殘疾皇子锨天,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 曾經(jīng)在思科的工廠測試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過2年半,現(xiàn)在...
    戈多在地獄閱讀 1,789評論 1 13
  • 命令歷史 以:和/開頭的命令都有歷史紀錄剃毒,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令病袄。 啟動vim 在命令...
    im螞蟻閱讀 30,734評論 3 48
  • Ubuntu的發(fā)音 Ubuntu基公,源于非洲祖魯人和科薩人的語言幅慌,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,203評論 9 467
  • 2017.8.17(170—120)《36》 今天聽一土豪聊起他的家事轰豆,他的大兒子生了兩個孫子胰伍,他非常高興,...
    方正省閱讀 179評論 0 1
  • 最近總是覺得家人對我不好酸休,對我關(guān)心不夠骂租,而且還總是挑我的毛病,心情壓抑斑司,不愿意和他們呆在一起菩咨,就算在一起也不愿說話...
    Dires蕾蕾閱讀 143評論 0 0