vim 文本编辑器:
可以在终端采用纯键盘操作的一款文本编辑器,号称编辑器之神
可以安装扩展(安装插件)
基本用法:
进入 vim: vim file.c 文件存在则打开,不存在则新建并打开
输入 i 进入编辑模式,编写代码
输入 **Esc ** 退出编辑模式,输入 ZZ 保存退出
vim的三大模式:
-
正常模式:打开文件时默认就是正常模式,一般用于阅读文件,或者使用快捷键对文件进行快速操作
-
编辑模式:一般用于编辑文件、编写代码
-
行底模式:用于对vim进行一些高级操作、对vim的设置
模式之间的切换:
正常 输入i ——> 编辑
编辑 按Esc ——-> 正常
正常 输入: ——> 行底
行底 按Esc ——> 正常
正常模式的常用操作:
光标移动:
H J K L 左下上右
gg 光标跳转到文件开头
G 光标跳转到文件末尾
n+回车 往下跳转n行
n+减号 往上跳转n行
n+G 直接跳转到第n行
vim file.c+n 打开后直接跳转到第n行
删除代码:
dd 删除一行代码
n+dd 删除光标下面n行代码
d+G 从光标处删除到文件末尾
d+gg 从光标处删除到文件开头
d+$ 从光标处删除到行尾
d+^ 从光标处删除到行首
x 删除一个字符
nx 删除n个字符
dw/de 从光标处连续删除字符直到遇到空格停止
复制代码操作:
yy 复制当前一行代码
nyy 复制当前n行代码
p 粘贴到当前光标下一行
P 粘贴到当前光标的上一行
移动代码操作:
删除的内容依然存在粘贴板中,通过p可以实现移动代码的效果
xp 可以快速交换两个字符
替换代码操作:
r 替换一个字符
cw 替换一个单词
R 进入替换模式
撤销操作:
u 撤销上一步操作
Ctrl+r 取消撤销操作
进入插入模式的操作:
i 在当前光标的前面进入插入模式
I 在当前行的行首进入插入模式
a 在当前光标的后面进入插入模式
A 在当前行的行尾进入插入模式
o 在当前行的下一行插入一行空白行并进入插入模式
O 在当前行的上一行插入一行空白行并进入插入模式
编辑模式的操作:
Ctrl+j/m 相当于回车
Ctrl+c 相当于Esc
自定义快捷键:
Ctrl+z 保存退出
Ctrl+x 保存,并编译运行代码
Ctrl+p 自动补全头文件、main函数
jj 相当于Esc
行底模式的常用操作:
:q 退出
:w 保存
:wq 保存退出
:q! 强制退出
:x 保存退出
:X 加密,输入两次密码,然后输入:wq才生效
:set key = 空格 删除密码
:!cmd 执行系统命令
:set nu 设置显示行号
:set nonu 设置取消显示行号
:/key 查询关键词key n往下找,N往上找
:%s/old/new 把所有关键字old,替换为new关键字
:< n行代码向左缩进一次
:> n行代码向右缩进一次
注意:行底模式的所有设置都只在当前vim生效,如果想要一直有效,需要修改vim的配置文件(~/.vimrc)
设置vim配置文件:
-
gedit ~/.vimrc 或者 vim ~/.vimrc
-
"设置行号 set number "设置Tab键的宽度 set tabstop=4 "自动缩进 set autoindent "设置自动缩进的宽度 set shiftwidth=4 "智能缩进 set smartindent "设置不生成临时文件 set noswapfile "设置不备份 set nobackup "设置插入模式下快速返回正常模式 imap jj <ESC> "定义保存并退出函数 func! SaveExit() exec "wq" endfunc "映射ctrl+z键调用保存并退出函数 map <C-z> : call SaveExit()<CR> imap <C-z> <ESC>: call SaveExit()<CR> vmap <C-z> <ESC> : call SaveExit()<CR> "定义自动保存并编译执行代码函数 func! ComplieCode() exec "w" if &filetype == "c" exec "!gcc % -lm -pthread && ./a.out" elself &filetype =="cpp" exec "!g++ -std=c++0x % -lm -pthread && ./a.out" endif endfunc "映射ctrl+x键调用编译执行函数 map <C-x> : call ComplieCode()<CR> imap <C-x> <ESC> : call ComplieCode()<CR> vmap <C-x> <ESC> : call ComplieCode()<CR> "定义自动补全头文件和main函数 func! InsertMain() if &filetype =="c" call setline(1,"#include <stdio.h>") call setline(2,"") call setline(3,"int main(int argc,const char* argv[])") call setline(4,"{") call setline(5,"") call setline(6,"}") exec "5" endif endfunc "映射正常模式下ctrl+p map <C-p> : call InsertMain()<CR>i<TAB>
-
vim:ZZ保存 或者 gedit 保存按钮