- A+
一、模式转换
1、模式
- Normal 普通模式
2. Insert 插入模式
3. Command 命令模式
4. Visual 可视模式
5. Replace
6. Change
7. Substitute
1、Normal —> Insert
i —> insert 在当前字母的前面插入
a —> append 在当前自摸的后面插入
o —> open a line below 创建一个新行插入
I —> insert before line 在当前行的最前面插入
A —> append after line 在当前行的最后面插入
O —> append a line above 在当前行的前面创建一个新行插入
2、Insert —> Normal
Esc —> 其他模式返回Normal模式
3、Normal —> Command
: —> 进入Command模式
4、Normal —> Visual
v —> 进入Visual模式,选择
V —> 进入Visual模式,选中整行
Ctrl+v —> 进入Visual模式,竖向选择
二、常用命令介绍
1、Normal模式
移动:
h/j/k/l —> 方向键(左/下/上/右)
w/W —> 移到下一个单词开头(word)
e/E —> 移到下一个单词结尾(end)
b/B —> 移到上一个单词开头(back word)
f[char] —> 移动到下一个字符。使用使用逗号(,)/分号继续搜索改行的上一个/下一个
F[char] —> 移动到下一个字符
0/$ —> 移动到行首/行尾
^/g_ —> 移动到行首/行尾非空白字符
(/) —> 移动到段落首字母/段落尾
{/} —> 移动到上一个段落尾/段落尾
gg/G —> 移动到文件开头/结尾
ctrl+O —> 返回上一次移动位置
H/M/L —> 移动到当前屏幕的开头/中间/结尾(Head/Middle/Lower)
Ctrl+u/f —> 上/下翻页(upward/forward)
zz —> 当前行在屏幕中间
删除:
dw ---> 删除当前单词(delete word)
daw ---> 删除当前单词及周围的空格(delete arround the word)
diw ---> 删除当前单词但不删除周围的空格
dt[char] ---> 删除到[char]之间的内容(delete to [char])
d$ ---> 删除到行尾
d0 ---> 删除到行首
[number]dd 删除[number]行。例:2dd 删除2行
[number]x 删除[number]个字符。例:4x 删除4个字符
v/Ctrl+v进入视图模式选择内容, x ---> 选择内容删除
其他:
u ---> 撤销
java
2、Command模式
:sp/Ctrl+w,s —> 横分屏(split)
:vs/Ctrl+w,v —> 竖分屏(vertical split)
:w —> 保存
:q —> 退出
:% s/click/dlick/g —> 将click替换为dlick(% 表示全部文件,s 表示替换,s/click/dlick 表示把 click 替换成 dlick,g 表示全局)
查询:
/[word] —> 向后查找。例如:/click 向后查找click单词,使用N/n跳转到上一个/下一个单词
?[word] —> 向前查找。例如:/click 向前查找click单词,使用n/N跳转到上一个/下一个单词
替换:
:[range] s/{pattern}/{string}/[flags]
- range ---> 范围。例:10,20表示10-20行, %表示全部
- s ---> 替换(substitute)
- pattern ---> 被替换的内容(可以是正则表达式)
- string ---> 替换后的内容
- flags ---> 标志。
- flag常用标志
- g ---> 全局范围内执行(global)
- c ---> 确认,可以确认或者拒绝修改(confirm)
- n ---> 报告匹配到的次数而不替换,可以用来查询匹配次数(number)
练习:
:% s/const/var/g 全局替换cosnt为var
:1,6 s/const/var/c 1到6行替换const为var(需要确认)
:% s/const//n 全局查询const的次数
:% s/\<connect\>/test/g 只替换connect的单词,不替换connection等的,正则替换
多文件操作:
vim pytest.py ---> 打开pytest.py
:e test1023.scala ---> 打开或者新建 test1023.scala
:ls ---> 查看缓冲区
2 %a "pytest.py" 第 6 行
3 "test1023.scala" 第 1 行
:b 2 ---> 跳转到2(pytest.py)
:b test1023.scala ---> 跳转到test1023.scala
窗口:
Ctrl+w,s/:sp ---> 横分屏(split)
Ctrl+w,v/:vs ---> 竖分屏(vertical split)
Ctrl+w,h/j/k/l ---> 光标在屏幕间移动
Ctrl+w,H/J/K/L ---> 当前屏幕左/下/上/右切换位置
Tab(标签页):
:tabe [filename] ---> 在新标签页打开文件(tab edit)(使用 gt/gT 向下/向上切换 Tab 页)
Ctrl+W,T ---> 把当前窗口移到一个新标签页
:tabc ---> 关闭当前标签页及其中的窗口(tab close)
:tabo ---> 只保留活动标签页,关闭所有其他标签页(tab only)
练习:
vi Dockerfile.txt
:vs 面试.txt
:vs englist_word.txt
:tabnew pytest.py
:vs hello.py
gt ---> 切换标签页
:tabc
java
3、Insert模式
ctrl+h ---> 删除上一个字符(在终端也适用)
ctrl+w ---> 删除上一个单词(在终端也适用)
ctrl+u ---> 删除当前行(在终端也适用)
java
4、Replace、Substitude、Change模式
r[char] —> 将当前字符替换为[char]。例:ra 将当前字符替换为a
s —> 删除当前字符,进入插入模式
c —> 删除当前字符,进入插入模式。例:ctw 删除当前字符到w字符,进入插入模式
三、Vim练习
1、文本对象操作
ci{ ---> 删除{}内的内容,进入插入模式
ci( ---> 删除()内的内容,进入插入模式
java
2、复制粘贴与寄存器的使用
- 复制粘贴
- Normal模式
- y(yank)复制,p(put)粘贴。注意:p向下复制,P向上复制
- d(delete)剪切,p(put)粘贴
- v(visual模式)选中
- 配置文本对象:yiw 复制一个单词,yy复制一行
- Insert 模式
(注意)在vimrc中设置了autoindent,粘贴代码缩进混乱。解决方法::set paste 和 :set nopaste- 寄存器
"[reigster] —> 指定寄存器
"+ —> 复制到系统剪贴板
练习:
"ayy —> 复制当前行的内容到a寄存器
"byy
:reg a —> 查看a寄存器的内容
:reg b
"ap —> 粘贴a寄存器的内容
- 寄存器
3、Vim宏(macro)
宏的概念:
1. 宏可以看作是一系列操作的集合
2. 使用宏录制一系列操作,然后用于回放
3. 宏可以非常方便的把一系列命令用在多行文本上
- 使用q开始录制,使用q结束
- 使用q{register}选择要保存的寄存器,把录制的命令保存其中
- 使用@{register}回放寄存器中保存的一系列命令
练习:使用宏批量给url添加双引号
qa I"<Esc> A"<Esc> q ---> 开始录制名称为a的宏:行首插入"后返回Normal模式,行尾插入"后返回Normal模式,结束录制
j V G ---> 下一行,选中当前行到文件结尾
:normal @a ---> 执行宏a
(方法2:不使用宏)
V+G ---> 选中内容
:normal I" ---> 行首插入"
:<Ctrl-p> 修改I为A ---> Ctrl+p(上一条命令),修改I为A:行尾插入"
java
4、Vim补全
- 使用 ctrl+n 和 ctrl+p 补全单词
- 使用 ctrl+x ctrl+f 补全文件名
- 使用 ctrl+x ctrl+o 补全代码,需要开启文件类型检查,安装插件
练习:
- 单词补全
self.d —> ctrl+n 弹出提示 —> 使用 ctrl+p 和 ctrl+n 进行上/下选择 - 文件名补全
with open("./te —> ctrl+x ctrl+f —> 使用 ctrl+p 和 ctrl+n 进行上/下选择
:r! echo % —> 文件名补全时,输出当前的文件名
5、Vim 配色 - 命令
- :colorscheme —> 显示当前的主题配色,默认是 default
- :colorscheme <ctrl+d> —> 显示所有的配色
- :colorscheme [配色名] —> 更换配色
- 从网上下载配色
- https://github.com/w0ng/vim-hybrid
练习:
$ git clone https://github.com/w0ng/vim-hybrid
$ mkdir -p ~/.vim/colors
$ cp vim-hybrid/colors/hybrid.vim ~/.vim/colors/
$ vi ~/Desktop/pytest.py ~/Desktop/hello.py -O
:syntax on
:colorscheme hybrid —> 可以观察到两个文件间的分隔线变了
- https://github.com/w0ng/vim-hybrid
四、常用操作
1、批量注释
// vim 批量注释:Ctrl+V 选择需要注释的行 —> I 输入 // —> Esc
Vim 批量操作:
1. 批量添加注释
示例文本:
test1
test2
test3
1. 移动到行首,执行 Ctrl+V 进入视图模式,纵向选中 3 行
2. 输入 I 进入插入模式并且跳转到行首,输入要添加的内容 //
3. 输入 Esc 回到普通模式
2. 批量删除多行注释
示例文本:
// test1
// test2
// test3
1. Ctrl+V 进入列模式,选中需要删除的内容
2. 按下 x 或者 d
java
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫