-
normal模式下 h 左移 j 下移 k 上移 l 右移 w/W 移到下一个word/WORD开头, e/E下一个word/WORD尾 b/B 回到上一个word/WORD开头,可以理解为backword word指的是以非空白符分割的单词,WORD以空白符分割的单词 主要使用w和b行间搜索移动:使用f{char}可以移动到char字符上,t移动到char的前一个字符;/,继续搜索下一个/上一个大写的F表示反过来搜前面的字符0移动到行首,$移动到行尾vim页面移动gg/G移动到文件开头/结尾ctrl+o 快速返回上次编辑位置H/M/L 跳转屏幕开头,中间,结尾(Head, Middle, Lower)Ctrl + u, Ctrl + f上下翻页(upward, forward)zz把屏幕置为中间
:syntax on 语法高亮
() 在句子间移动
:help( 查看帮助
easy-motion 插件移动
normal 移动的快捷方式:
w/W: 移动到下一个word/WORD 开头
e/E: 移动到下一个 word/WORD 结尾
b/B: 移动到上一个 word/WORD 开头 (backword)
行间搜索移动
f{char}: 当前光标往行后搜索字符, 分号(;)下一个找到的字符,逗号(,)上一个找到的字符
F{char}: 当前光标往前搜索字符
0: 移动到行首第一个字符
^: 移动到第一个非空白字符
$: 移动到行尾
g_: 移动到行尾非空白字符
页面移动
gg: 文件开头
G: 文件结尾
H: 屏幕的开头(Head)
M: 屏幕的中间(Middle)
L: 屏幕的结尾(Lower)
crtl+u: 上翻页(upword)
ctrl+f: 下翻页(forword)
zz: 屏幕置为中间
移动命令。
w : next word head
e : next word end
b : previous word head
f{char} : find a char in the line
; : to find the next same char
F{char} : do f in reverse
0 : move to the head of the row
$ : move to the end of the row
gg : move to the head
G : move to the end
^o : go back the privious
H/M/L : move the head / middle /lower of file
^u : pageup
^f : pagedown
zz : set the screen to the middle
查看全部 -
使用a/i/o进入插入模式;ctrl+h 删除上一个字符ctrl+w 删除上一个单词ctrl+u 删除 当前行使用 ctrl+c代替Esc(但是可能会中断某些插件),所以推荐使用 ctrl+[gi 快速跳转到最后一次编辑的地方并进入插入模式
输入模式下快速纠错(终端下也有类似的快捷键)
• ctrl+h 删除上一个字符
• ctrl+w 删除上一个单词
• ctrl+u 删除当前行
• ctrl+a (终端) 快速移动到开头
• ctrl+e (终端)快速移动到结尾
• ctrl+f (终端)光标后移
• ctrl+b (终端)光标迁移
2. 快速切换 insert 和 normal 模式
insert -> normal: ctrl+c 或者 ctrl+[
gi: normal 模式切换到 insert 模式,且到上次编辑的地方
^h 删除上个字符
^w 删除上个单词
^u 删除至开头
^[ Esc
Shell
^a 跳转到开头
^e 跳转到结尾
查看全部 -
1、sp、vs可进行分屏编辑;2、% s/str1/str2/[g] 可进行文本[全局]替换;3、normal模式下,v/V进行可视化(光标/整行选中)操作;4、y命令可以复制选中的块,p可以粘贴复制的块。
vim4种模式
Normal普通模式(浏览)
Esc插入模式回到普通模式
普通模式下进行各种命令操作和移动
大部分情况下,使用的是浏览
Insert插入模式(编辑)
a/i/o 光标进入插入模式
A/I/O 行进入插入模式
Command命令模式(操作)
Normal模式下:进入命令模式
:q退出 :w保存
:vs(vertical split)垂直左右分屏 :sp(split) 水平上下分屏
:set nu 设置行号
:% s/java/python/g 全部替换java->python
Visual可视模式(选择)
Nomal模式下进入Visual模式
v选择字符
V选择行
ctrl+v块状选择
Vim编辑模式:Nomal模式(ESC)Insert模式(a,i,o,A,I,O)Command模式Visual模式(v,V)
进入vim默认是normal模式
还有 : cmd命令模式 和 v(visual)可视化模式
命令模式:
保存 :w
退出 :q
保存并退出 :wq
纵向分屏 :vs
横向分屏 :sp
全局替换 :% s/foo/bar/g (foo被替换的,bar替换后的)
设置显示行号 :set nu
Visual模式:
normal模式下使用 v 进入 visual 模式选择
使用 V 选择行
使用 ctrl+v 进行块状选择
:vs 纵向分屏
:sp 横向分屏
:set nu 显示行号
:% s/[original]/[new]/g 全局替换[original]为[new]
进入可视化模式:
v 进入字符选择
V 进入行选择
C-v 进入块选择
查看全部 -
a append
i insert
o open a line below
A append after line
I insert before line
O append a line above
a:当前字符的后一个位置插入
i:当前字符的前一个位置插入
o:当前编辑位置下面新起一行
A:在行最后位置插入
I: 在行最前的位置插入
O:在当前编辑位置的上面新起一行
:w:保存
:wq:保存并退出(w and q)
i insert 在当前字符前面插入
a append 在当前字符后面插入
o open a line blow 在当前行的下一行插入查看全部 -
## 2-13 裸的vim
- 很多初学者Vim基本命令都不熟就开始找一些复杂的强大配置
- 不利于你熟悉Vim,一旦出问题了你还不知道怎么修复
- 建议初学者还是从裸的Vim开始学习,有些场景比如服务器或者容器上我们没法配置Vim
学之前,先用对打字指法和盲打
- 编辑代码,脑子- -般比手快,盲打有利于跟上你的大脑速度
- 裸的Vim也有很多强大功能和使用方式,本章你应该学到了不少
- 学会了用Vim ,你可以在你的IDE.上安装Vim插件,几乎所有流行的编辑器和IDE工具都支持Vim插件
查看全部 -
## 2-12 给vimhr个配色
### vim更换配色
- 使用:colorscheme显示当前主题配色,默认是default
- 用:colorscheme <ctrl+d>可以显示所有配色
- 中意的配色后,用:colorscheme 配色名就可以修改配色
查看全部 -
## 2-11 vim补全大法
### 什么是补全
- 补全是根据当前环境上下文有编辑器【猜】你想输入的东西
- 比如补全一个单词、文件名、或者代码中的函数名、变量名
- vim中提供了多种补全功能,还有由插件拓展功能实现代码补全
### vim中常见的补全
vim中有很多种补全方式
| 命令 | 补全类型 |
| ------ | ---------- |
| \<C-n> | 补全关键字 |
|\<C-x>\<C-n>|当前缓冲区关键字|
|\<C-x>\<C-i>|包含文件关键字|
|\<C-x>\<C-j>|标签关键字|
|\<C-x>\<C-k>|字典查找|
|\<C-x>\<C-l>|整行补全|
|\<C-x>\<C-f>|文件名补全|
|\<C-x><C-0>|全能(Omin)补全|
### 常见的三种补全类型
- 使用Ctrl+n和Ctrl+p补全单词
- 使用Ctrl+x,Ctrl+f补全文件名
- 使用Ctrl+x,Ctrl+o补全代码,需要开启文件类型检查,安装插件
查看全部 -
## 2-10 vim宏(macro)
### 从需求说起
批量处理文本
### 什么是vim宏(macro)
- 宏可以看成是一系列命令的集合
- 我们可以使用宏【录制】一系列操作,然后用于回放
- 宏可以方便的把一下列命令用在多行文本上
### 如何使用宏
- vim使用q来录制,同时也也是q结束录制
- 使用q{register}选择要保存的寄存器,把录制的命令保存其中
- 使用@{register}回放寄存器中保存的一系列命令
### 用宏解决刚才的问题
- 献给一行加上双引号,让后在回放到其他行
- 我们先使用q开始录制,给一行加上双引号,之后使用q退出
- 在剩下的所有行中回放录制的宏
查看全部 -
## 2-9 vim复制粘贴与寄存器的使用
### vim在Normal模式复制粘贴
- Normal模式下复制粘贴分别使用y(yank)和p(put),剪切d和p
- 可以使用v(visual)命令选中所要复制的地方,然后顺遂p粘贴
- 配合文本对象:比如顺遂yiw复制一个单词,yy复制一
### Insert模式下的复制粘贴
- 和其他文本编辑器差不多,但粘贴代码有个坑
- 在vimrc中设置了autoindent,粘贴Python代码缩进错乱
- 这个时候需要使用`:set paste`和`:setnopaste`解决
### 什么是vim的寄存器
- vim里操作的是寄存器而不是系统剪切版,这和其他编辑器不同
- 默认使用d删除或者y复制的内容都放到了“无名寄存器”
- 用x删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符
### 深入寄存器(register)
- 通过`"{register}`前缀可以指定寄存器,不指定默认无名寄存器
- 比如使用`"ayiw`复制一个单词到寄存器a中,'bdd删除当前行到寄存器b中
- :reg a查看寄存器a中的内容
- "a p粘贴a寄存器中的内容
### 其他常见寄存器
除了有名的寄存器a-z,vim中还有一些其他常见寄存器
- 复制专用寄存器`"0`使用y复制的文本同时会被考呗到复制寄存器0
- 系统剪切版`"+`可以复制到系统剪切版
- 其他寄存器,比如`"%`当前文件名,`".`上次插入的文本
- :set clipboard=unnamed可以让你直接复制粘贴系统剪切版内容
查看全部 -
## 2-8 什么是vim的text object
### Text Object(文本对象)
- vim里文本也有对象的概念,比如一个单词,一段句子,一个段落
- 很多其他编辑器经常只能操作单个字符来修改文本,比较低效
- 通过操作文本对象来修改要比只操作单字符高效
### 文本对象操作方式
- `[number]<command>[text object]`
- number 表示次数,command是命令,d(delete),c(change),y(yank)
- text object是操作的文本对象,比如单词w,句子s,段落p
查看全部 -
## 2-7 vim多文件操作
### Buffer,Window,Tab
- Buffer是指打开的一个文件的内存缓冲区
- 窗口是Buffer可视化的分割区域
- Tab可以组织窗口位一个工作区
#### Buffer
#####Buffer-什么是缓冲区?
- vim打开一个文件后会加载文件内容到缓冲区
- 之后的修改都是针对内存着的缓冲区,并不会直接保存到文件
- 直到我们执行:w(write)的时候才会把修改内容写入到文件里
##### Buffer切换
- 使用:ls会列举当前缓冲区,然后使用:b n跳的第n个缓冲区
- :bpre :bnext :bfirst :blast
- 或者用:b buffer_name加上tab补全来跳转
#### Window窗口
窗口是可视化的分割区域
- 一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同缓冲区
- <Ctrl+w>s水平分割,<Ctrl+w>v垂直分割。或者:sp和:vs
- 每个窗口可以继续无限分割
|命令|用途|
|---|---|
|<Ctrl-w>w|在窗口键来回切换|
|h|切换到左边窗口|
|j|切换到下边窗口|
|k|切换到上边窗口|
|l|切换到右边窗口|
大写时可以移动窗口
#### Tab(标签页)将窗口分组
Tab是可以容纳一系列窗口的容器(:h tabpage)
- vim 的Tab和其他编辑器不太一样,可以想象成Linux的虚拟桌面
- 比如一个Tab全用来编辑Python文件,一个Tab全是HTML文件
- 相比窗口,Tab一般用的比较少,Tab太多,管理起来也太麻烦
查看全部 -
## vim如何搜索替换
### vim替换命令
substitute命令允许我们查找并且替换掉文本,并且支持正则表达式
- `:[range]s[ubstiute]/{pattern}/{string}/[flags]`
- range表示范围比如:10,20表示10-20行,%表示全部
- pattern要替换的模式,string是替换后的文本
#### 替换标志位
flags有几个常用的标志
- g(global)表示全局范围内执行
- c(confirm)表示确认,可以确认或者拒绝
- n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
查看全部 -
## Vim快速增产改查
### Vim增加字符
- 进入插入模式
- 使用a/i/o进入插入模式
### Vim快速删除
如何快速删除一个字符或者单词?
- Vim在Normal模式下使用x快速删除一个字符
- 使用d(delete)配合文本对象快速删除一个单词daw(d around word),diw(删除一行,不包括空白字符)
- dd删除一行,`dt(`快速删除括号里的内容
- d$快速删除到行尾,d0快速删除到行首
- d和x都可以搭配数字来执行多次
- 使用v可以选择删除
### Vim快速修改
- 常用有三个,r(replace),c(change),s(substitute)
- Normal模式下使用r可以替换一个字符。s替换并进入插入模式
- R不断替换,Esc退出,S删除整行并进入插入模式
- 使用c配合文本对象,我们可以快速修改,cw删除单词插入,ct"删除引号中的内容
### Vim查询
- 使用/或者?进行前向或者反向搜索
- 使用n/N跳转到下一个或上一个匹配
- 使用*或者#进行当前单词的前向和后项匹配
查看全部 -
:imap <c-d> <Esc>ddi 此映射可在插入模式下使用 ctrl+d 实现快速删除
命令行对应映射 cnoremap
<cr> 指代回车键,也可写作<Enter>
let mapleader="," inoremap <leader>w <Esc>:w<cr> 可以将<Leader> 键自定义映射为“,”,同时利用 <Leader> 来创建自定义映射项
查看全部 -
配置映射插件vim脚本
:source ~/.vimrc 重新加载vimrc文件,使文件配置生效
查看全部
举报