以思维的速度编辑文本-快捷键&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系列快捷键

需要设置iterm的profile,将Option键设置为Esc

Option + F前进一个单词
Option + B后退一个单词
Option + D删除一个单词
Option + W删除到行首
Option + . 自动补全上一条命令的最后一个参数

4. 其他Tips

  • d 显示历史跳转目录,然后按相应数字键进行跳转目录
➜  index git:(master) d
0   ~/work/index
1   ~/work/casa-listing-service
2   /usr/local/etc/nginx
  • r {target}={replace} 重复上条命令 并替换掉上条命令部分字符;参数为空时,重复执行上条命令
➜  ~ echo casa
casa
➜  ~ r casa=myfun
echo myfun
myfun
  • ack 文件内容快速搜索
  • cmd+\ 显示光标位置

二、Vim入坑指南

image

主流编辑器的学习曲线图

一旦你意识到Vim的强大,你就踏上了不停发掘它们潜力的漫漫长路。你不停地改进自己的配置文件,你不停地搜索更好的插件,甚至有一天你开始动手写自己的插件。就像剑客保养自己的剑一样,你也甘心花时间提升你的Vim。经年累月,不知不觉,你已经在那把剑上倾注了你的灵魂。

用Vim就像吸食毒品,慢慢地就会上瘾。它会带给你渐渐强烈的快感,但你也向它献出了自己的灵魂。这时,你只能称它为神器。

Real Vim ninjas count every keystroke.

vimgolf put 576c778ea4896a561b01b4f2

1. 更好的操作习惯

  • ZZ == :x == :wq
  • Ctrl + [ == ESC
  • hjkl ==(←↓↑→)
  • . : 重复执行上次的修改
  • u : undo
  • Ctrl + r : redo

2. 普通(normal)模式

(1)移动(Motion)

普通移动:

hjkl :←↓↑→
+ : 跳转至下一行非空行首
- : 跳转至上一行非空行首
^ :跳转至当前行非空行首
0 : 跳转至行首
$ : 跳转至行尾
e : 跳转至单词尾部
ge : 反向跳转至单词尾部
w : 正向跳转至单词头部
b : 反向跳转至单词头部
}/): 正向跳转至段落尾部(有差别)
{/(: 反向跳转至段落尾部(有差别)
gg : 跳转至首行
G : 跳转至尾行
M : 跳转中间行
% : 在开闭标签内跳转() {} [] <>

行级查找移动:

f{char} : 将光标正向移动到{char}上
F{char} : 将光标反向移动到{char}上
t{char} : 将光标正向移动到{char}前
t{char} : 将光标反向移动到{char}后
; : 重复上次移动
, : 回退上次移动

全文查找移动:

/{target} : 查找文本
n : 正向跳转
N : 反向跳转
* : 查找光标所在单词的下一处

标签移动

m{a-zA-Z} : mark标记   
`{标记符} : 跳转至相应标记
默认标记:
`` : 跳转之前的位置(Ctrl + o)
`. : 上次修改的地方
`^ : 上次插入的地方
`[ : 上次修改或复制的起始位置
`[ : 上次修改或复制的结束位置
`< : 上次高亮选区的起始位置
`> : 上次高亮选区的结束位置

(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 : 连续替换输入字符
Y=yy : 复制当前行
dd : 删除当前行
D=d$ : 删除至行尾
C=c$ : 修改至行尾
o : 在当前行下插入一行
O : 在当前行上插入一行
J : join将下一行与当前行连起来
. : 重复上传修改

(3)文本对象(Object)

分隔符文本对象
(
{
[
<
"
'
`
t(tag标签)
范围文本对象
w : word
W : String
s : sentence
p : paragraph
文本对象范围(Range)
i : inside
a : around

(4) 普通模式命令语法

  1. {n}{Instant-Action}

5dd : 删除五行
5p : 将寄存器的内容在光标后粘贴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 :激活或者关闭面向==字符==的可视模式
  • V :激活或者关闭面向==行块==的可视模式
  • Ctrl + v :激活或者关闭面向==列块==的可视模式
  • gv :重选上次选择区域
  • o :切换高亮区域选择端

惯用用法

  • {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 : 从插入模式切换到普通模式,执行一条命令后自动切换回插入模式

5.寄存器

"{Register} : 引用寄存器

"ayy // 将当前行复制到a寄存器中
"ap // 普通模式下将a寄存器的内容粘贴出来
Ctrl + r + a // 插入模式下将a寄存器的内容粘贴出来

常用寄存器

  • "" : 默认寄存器,执行任何{Action}都是对该寄存器操作
  • "0 : 复制专用寄存器,执行y命令后,会同时将文本存储在""和"0中,其他操作则只会存储在""
  • "{1-9} : 压栈寄存器:每执行一次==删除/修改Action==后会将""中的内容压入其中
  • "{a-z} : 有名寄存器
  • "_ : 黑洞寄存器
  • "*/+ : 系统剪切板寄存器
  • “= : 表达式寄存器

6.命令(Command)模式

命令行模式是VIM继承自老祖先ed ex的遗产,有着相当强大的功能。
普通模式适合近距离作战,命令模式适合远距离作战。

:1,5t$ //将第一行到第五行拷贝到最后一行 

(1)行[line]

n : 绝对行  
. : 当前行  
.+(-)n : 当前行向下(上)偏移n行  
$ : 最后一行  
% : 所有行  
‘< : 高亮区域起始行  
‘> : 高亮区域结束行  

(2)范围[Range]

[StartLine,EndLine]

可以进入视图模式选中行,然后进入命令模式,会默认选中其高亮部分

(3)操作命令

: [range] delete/d [x] 将选定区间的行删除 并寄存到x中
: [range] yank/y [x] 将选定区间的行复制 并寄存到x中
: [line] put [x] 将选定寄存器x中数据粘贴到指定行下
: [range] join /j 将选定行连接
: [range] t [line] 将选定区间行的内容复制到指定地址
: [range] move/m [line] 将选定区间行的内容移动到指定地址
: [range]s/target/repalce 替换指定行内的target到replace
: [range]normal[NormalCmd] 在指定行内执行普通模式的命令

可以用"|"来连接多条命令,一起执行

:1m$|$-1m0 // 将第一行和尾行互换

7.宏

宏用于对一系列相似的行、段落、文件进行重复性的修改。
宏可以把任意数目的按键操作录制到寄存器,用于之后的回放。

宏命令

qa //将宏录制到a寄存器中
q // 结束本次宏的录制
:reg a // 查看宏的内容
{n}@a // 串行的将a寄存器中的宏执行n遍
:[range]normal @a//并行的将宏在选择的文本上执行
qA // 可以给宏追加命令

8 推荐资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容

  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 1,789评论 1 13
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,738评论 3 48
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,217评论 9 467
  • 2017.8.17(170—120)《36》 今天听一土豪聊起他的家事,他的大儿子生了两个孙子,他非常高兴,...
    方正省阅读 179评论 0 1
  • 最近总是觉得家人对我不好,对我关心不够,而且还总是挑我的毛病,心情压抑,不愿意和他们呆在一起,就算在一起也不愿说话...
    Dires蕾蕾阅读 143评论 0 0