MS-Vim基础操作
基础操作
Vim 是基于模式的文本编辑器。
1 | Normal --< i >--------> Insert |
需要熟悉这些切换,不然你就可以在你的屏幕上得到一串随机字符串 😀
因为你会在使用 Vim 时大量使用 <ESC>
键,所以可以考虑把大小写锁定键重定义成 <ESC>
键,这个通过 Vim 里面的映射
来完成。
缓存, 标签页, 窗口
Vim 的窗口与我们以前所用的编辑器都不同。
Vim 会维护一系列打开的文件,称为“缓存”(即 buffer
)。一个 Vim 会话包含一系列标签页(即 tab
),每个标签页包含 一系列窗口(分隔面板 window
)。每个窗口显示一个缓存。跟网页浏览器等其他你熟悉的程序不一样的是, 缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在多个窗口打开,甚至在同一 个标签页内的多个窗口打开。这个功能其实很好用,比如在查看同一个文件的不同部分的时候,即你可以在一个标签页内打开两个窗口,一个窗口看文件头部,一个看文件尾部的内容。你在其中一个窗口输入的时候,另一个在同一个buffer
下的窗口内容也会跟着改变。
命令行模式
在正常模式下键入 :
进入命令行模式。 在键入 :
后,你的光标会立即跳到屏幕下方的命令行。 这个模式有很多功能,包括打开,保存,关闭文件,以及退出 Vim。
:q
退出(关闭窗口):w
保存(写):wq
保存然后退出:e {文件名}
打开要编辑的文件(配合上下键选择已经打开的缓存):ls
显示打开的缓存:help {标题}
打开帮助文档时要注意区别:
:help :w
打开:w
命令的帮助文档:help w
打开w
移动的帮助文档
Vim 设计思想
移动
基本移动:
hjkl
(左, 下, 上, 右)词:
w
(下一个词),b
(词初),e
(词尾)行:
0
(行初),^
(第一个非空格字符),$
(行尾)屏幕:
H
(屏幕首行),M
(屏幕中间),L
(屏幕底部)翻页:
Ctrl-u
(上翻),Ctrl-d
(下翻)文件:
gg
(文件头),G
(文件尾)行数跳转:
:{行数}<CR回车>
,跳转的指定的行{行数}G
,跳转到下 n 行
杂项:
%
(找到配对,比如括号或者 /* */ 之类的注释对)查找:
1
f{字符}
1
t{字符}
1
F{字符}
1
T{字符}
- 查找/到 向前/向后 在本行的字符
- 小写向后查找,大写向前查找
f
是定位到查找的字符上,t
是定位到查找的字符前,大写同理,
/;
用于导航匹配
搜索:
/{正则表达式}
, 按下enter
确定后,n
/N
用于导航匹配(下一个/上一个匹配项)
选择
即进入可视化模式:
- 可视化:
v
- 可视化行:
V
(即shift-v
) - 可视化块:
Ctrl+v
可以用移动命令来选中。
编辑
所有你需要用鼠标做的事, 你现在都可以用键盘:采用编辑命令和移动命令的组合来完成。 这就是 Vim 的界面开始看起来像一个程序语言的时候。下面是 Vim 处于普通模式下的一些编辑命令:
i
进入插入模式O
/o
在之上/之下插入行并进入插入模式d{移动命令}
- 例如,
dw
删除词,d$
删除到行尾,d0
删除到行头。
- 例如,
c{移动命令}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
- 例如,`cw` 改变词
- 相当于 `d{移动命令}` 再 `i`,`c`命令会自动进入`insert`模式
- `x` 删除字符(等同于 `dl`)
- `s` 替换字符(等同于 `xi`)
- 可视化模式 + 操作
- 选中文字, `d` 删除 或者 `c` 改变,或者 `y` `p` 复制粘贴
- `u` 撤销, `<C-r>` 重做
- `y` 复制 / “yank” (其他一些命令比如 `d` 也会复制,相当于剪切)
- `p` 粘贴 / "paste"
- 更多值得学习的: 比如 `~` 改变字符的大小写,看老师演示时挺难蚌的
### 计数
你可以用一个计数来结合“名词”和“动词”,这会执行指定操作若干次。
- `3w` 向前移动三个词
- `5j` 向下移动 5 行
- `7dw` 删除 7 个词
### 修饰语
你可以用修饰语改变“名词”的意义。修饰语有 `i`,表示“内部”或者“在内“,和 `a`, 表示”周围“。
- `i`不包含配对符,`a`则包含
- `ci(` 改变当前括号内的内容
- `ci[` 改变当前方括号内的内容
- `da'` 删除一个单引号字符串, 包括周围的单引号
## 演示例子
这里是一个有问题的 [fizz buzz](https://en.wikipedia.org/wiki/Fizz_buzz) 实现:
```python
def fizz_buzz(limit):
for i in range(limit):
if i % 3 == 0:
print('fizz')
if i % 5 == 0:
print('fizz')
if i % 3 and i % 5:
print(i)
def main():
fizz_buzz(10)
我们会修复以下问题:
- 主函数没有被调用
- 从 0 而不是 1 开始
- 在 15 的整数倍的时候在不用行打印 “fizz” 和 “buzz”
- 在 5 的整数倍的时候打印 “fizz”
- 采用硬编码的参数 10 而不是从命令控制行读取参数
- 主函数没有被调用
G
文件尾o
向下打开一个新行- 输入 “if name …”
- 从 0 而不是 1 开始
- 搜索
/range
ww
向前移动两个词i
插入文字, “1, “ea
在 limit 后插入, “+1”
- 搜索
- 在新的一行 “fizzbuzz”
jj$i
插入文字到行尾- 加入 “, end=’’”
jj.
重复第二个打印jjo
在 if 打开一行- 加入 “else: print()”
- fizz fizz
ci'
变到 fizz
- 命令控制行参数
ggO
向上打开- “import sys”
/10
ci(
to “int(sys.argv[1])”
Vim 学习小结
第一讲小结
光标移动
使用hjkl
字母键:h
(左移)j
(下行)k
(上行)l
(右移)
进入 Vim 编辑器
输入:vim 文件名 <回车>
退出 Vim 编辑器
- 放弃改动:
<ESC> :q! <回车>
- 保存改动:
<ESC> :wq <回车>
- 放弃改动:
删除光标所在字符
按键:x
插入/添加文本
i
:光标前插入文本,按<ESC>
退出A
:在一行末尾添加文本,按<ESC>
退出
特别提示
按<ESC>
键可返回正常模式或取消不完整命令。
第二讲小结
删除命令
- 删除至下一个单词:
dw
- 删除至行末:
d$
- 删除整行:
dd
- 删除至下一个单词:
重复动作
在命令前加数字:2w
命令格式
operator [number] motion
operator
:操作符(如d
代表删除)[number]
:重复次数motion
:移动方式(如w
代表单词,$
代表行末)
其他命令
- 移动至行首:
0
- 撤销:
u
- 撤销整行改动:
U
- 恢复撤销:
CTRL-R
- 移动至行首:
第三讲小结
置入已删除文本
按p
将删除内容置于光标后。删除整行时置于下一行。字符替换
输入:r 新字符
更改命令
- 替换至单词末尾:
ce
- 替换至行末:
c$
格式:c [number] motion
- 替换至单词末尾:
第四讲小结
跳转命令
- 显示文件状态:
CTRL-G
- 跳至文件末尾:
G
- 跳至指定行:
行号G
- 跳至文件开头:
gg
- 显示文件状态:
查找命令
- 正向查找:
/字符串
- 反向查找:
?字符串
- 查找下一个匹配:
n
- 反向查找下一个:
N
- 正向查找:
跳转回旧位置
- 较旧位置:
CTRL-O
- 较新位置:
CTRL-I
- 较旧位置:
括号配对跳转
按%
替换命令
- 替换当前行首个:
:s/old/new
- 替换当前行所有:
:s/old/new/g
- 替换两行间所有:
:#,#s/old/new/g
- 全文替换:
:%s/old/new/g
- 全文替换并确认:
:%s/old/new/gc
- 替换当前行首个:
第五讲小结
执行外部命令
:!command
保存文件
- 保存为新文件:
:w FILENAME
- 可视模式保存:
v motion :w FILENAME
- 保存为新文件:
插入文件内容
- 从磁盘插入:
:r FILENAME
- 插入命令输出:
:r !dir
- 从磁盘插入:
第六讲小结
插入/添加文本
- 在下方插入新行:
o
- 在上方插入新行:
O
- 光标后插入:
a
- 行末后插入:
A
- 在下方插入新行:
移动光标
到单词末尾:e
复制/粘贴文本
- 复制:
y
- 粘贴:
p
- 复制:
替换模式
输入R
持续替换,按<ESC>
退出。设置选项
- 忽略大小写:
:set ic
- 搜索时高亮显示:
:set hls
- 关闭选项:
:set noic
- 忽略大小写:
第七讲小结
帮助命令
- 打开帮助:
:help
- 查看特定命令帮助:
:help cmd
- 关闭帮助窗口:
:q
- 打开帮助:
窗口操作
窗口间跳转:CTRL-W
补全命令
- 查看补全:按
CTRL-D
- 使用补全:按
<TAB>
- 查看补全:按
配置启动文件
可创建vimrc
脚本保存偏好设置。