2017届西安思沃大讲堂

以思维的速度编辑文本-快捷键&Vim

2016-12-06  本文已影响33人  TaTas

一、命令行文本操作快捷键

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

➜  index git:(master) d
0   ~/work/index
1   ~/work/casa-listing-service
2   /usr/local/etc/nginx
➜  ~ echo casa
casa
➜  ~ r casa=myfun
echo myfun
myfun

二、Vim入坑指南

image

主流编辑器的学习曲线图

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

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

Real Vim ninjas count every keystroke.

vimgolf put 576c778ea4896a561b01b4f2

1. 更好的操作习惯

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):

惯用用法

v3jd: 向下选中3行删除
v3lp: 向右选择3个字符剪切掉,然后将寄存器的值粘贴
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寄存器的内容粘贴出来

常用寄存器

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 推荐资源

上一篇下一篇

猜你喜欢

热点阅读