Vim操作
编辑模式下:
ctrl + h删除上一个字符 ctrl + w 删除上一个单词 ctrl + u 删除当前行
ctrl + o 进入单词命令模式 ctrl + [ 退出编辑模式 进入Normal模式
Normal Mode:
r 替换字符 ra会把光标所在的字符替换为a s 删除字符并进入编辑模式 R 不断的替换后面的字符,进入replace模式 S 删除当前整行,进入编辑模式 a在当前字符后面添加进入编辑模式
i 进入编辑模式
o 新开一行进入编辑模式
x 删除后面的一个字符
dd删除当前行
dt)删除括号中的内容 delete until ) dt " 删除双引号中的内容 d$ 从当前光标位置删除到行尾
ct) 删除括号中的内容,并进入插入模式 ct" 删除双引号中的内容并进入插入模式 c$ 和S的效果相同,删除当前行并进入插入模式 yy复制整行 p 粘贴 v 进入visual模式,选中文本,按y进行复制
A 跳转到当前行末尾,在当前行末尾添加字符,进入编辑模式
I 跳转到当前行开头,进入编辑模式
O 在当前行的上一行新开一行,进入编辑模式
gi 快速跳转到你最后一次编辑的地方并进入插入模式
dw 删除一个单词 cw 删除一个单词并进入编辑模式
w/W 移动到下一个word/WORD开头
e/E 下一个word\WORD结尾
b/B 回到上一个word\WORD开头
word 指的是以非空白符分割的单词 WORD指的是以空白符分割的单词
同一行快速移动的方式其实是搜索一个字符并且移动到该字符 使用f{char} 可以移动到char 字符上,t移动到char 的前一个字符如果第一次没搜到,可以用分号(;)/逗号(,)继续搜该行下一个/上一个字符 大写的F 表示反过来搜前
0 移动到行首第一个字符 $ 移动到行尾
使用()在句子之间移动 使用{}在段落之间移动
页面移动: gg文件开头 G文件结尾
H M L 分别跳转到屏幕的开头,中间,底部
ctrl + u ctrl+ f分别为向上下翻页
zz把屏幕设置为中间
Vim搜索
/ 或者? 进入搜索 n/N 找下一个单词或者上一个单词 :set hls 高亮搜索 :set incsearch 增量搜索,会边搜索边增加高亮 (建议持久化)
Vim搜索替换 :[range] s/{pattern}/{string}/[flags]
range 表示范围: 比如:10,20 表示10-20 行,% 表示全部
pattern 是要替换的模式,string是替换后的文本
flags 常用的标志: g 表示全局范围内执行 c 表示确认,可以确认或者拒绝修改 n 报告匹配到的次数,而不替换
例子: :% s/learning/learn/g 表示全局替换当前文本下所有的learning为learn
:% s/learn//n 返回匹配到多少
:% s/learning/learn/c 会向你询问是否要替换
Buffer切换
:ls 会列举当前缓冲区,然后使用:b n 来跳转到第n个缓冲区
:bpre :bnext :bfirst :blast 或者使用:b buffer_name 加上tab进行补全切换buffer
Window窗口
ctrl + w + v 垂直分割 :vs
tab
vim text object
终端下:
ctrl + b 前移 ctrl + f 后移 ctrl + a 快速移动到开头 ctrl + e 快速移动到结尾