几种工作模式
进入插入模式
i 当前位置
I 当前行行首
a 当前位置的后一个位置
A 当前行行末
o 当前行的下一行
O 当前行的上一行
移动
h(left) j(down) k(up) l(right)
文本编辑
x 删除光标所在处字符
fn 找下一个字符n
dw 删除一个单词
dd 删除光标所在行
5dd 删除5行
u 撤销操作
ctrl+r 重做操作(u的反向操作)
yy 复制一行
p 粘贴
r 替换一个字符
s 更改一个字符
cw 更改一个单词
设置
:set number(nu) 设置行号
:set nonumber 取消行号
:set autoindent(ai) 自动缩进
保存、退出
:wq 保存退出
ZZ 保存退出
:w filename 文件另存为
窗口操作
:sp(new) filename 水平分屏
:vsp(vnew) filename 垂直分屏
ctrl +ww或hjkl 切换窗口
:e filename 打开另一个文件(把filename加载到新的缓冲区中)
:bn(buffer next) 切换到下一个缓冲区
:bd(buffer delete) 删除缓冲区
键盘映射
:map <Tab> :bn<CR> 将:bn命令映射为Tab键(map命令模式映射)
:imap jj <Esc> 将jj映射为Esc(imap编辑模式映射)
let g:mapleader="," 全局设置用,代替\
标签
:tabe filename 新建标签
:tabr 切换到第一个标签
:tabl 切换到最后一个标签
gt 切换到下一个
gT 切换到上一个
map t gt
map T gT
查找、替换
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:g/^$/d 删除空行
:%s/^../ 删除每行前两个字母(%表示当前文件所有的, s-similar替换)
:%s/old/new/g 搜索整个文件,将所有的old替换为new(g-global所有的)
:1,10s/old/new/g 替换1到10行里的
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
书签
ma 把当前位置存在标签a
Ma 把当前文件存在标签a
`a 跳转到标签a处
可视化模式
v 进入可视模式,单字符模式
V 进入可视模式,行模式
ctrl+v 进入可视模式,列模式
o 跳转光标到选中块的另一个端点
U 将选中块中的内容转成大写
u 将选中块中的内容转成小写
aw 选中一个字
ab 选中括号中的所有内容,包括括号本身
aB 选中{}括号中的所有内容
ib 选中括号中的内容,不含括号
iB 选中{}中的内容,不含{}
> 块右移一个tab
< 块左移一个tab
y 复制块
d 删除块
~ 切换块中内容的大小写
选中、删除、复制、修改引号或括号内的内容
vi’、vi”、vi(、vi[、vi{、vi< - 选中
di’、di”、di(或dib、di[、di{或diB、di< - 删除
yi’、yi”、yi(、yi[、yi{、yi< - 复制
ci’、ci”、ci(、ci[、ci{、ci< - 更改
在vim中使用shell命令
:! date
:r! date 将date的输出结果输入到当前文本
其他
gg=G 或 ggVG= 格式化文本
转载请注明:有客帮 » vim基础教程