小白的编程经验(vim编辑器的使用)

vim编辑器是一款可以在终端下采用纯键盘操作的文本编辑器,号称“编辑器之神”,可以升级(二次开发)、可以扩展(安装插件)

在这里插入图片描述

1、基本用法:

进入vim:vim filename 如果文件不存在创建该文件
保存退出:按ESC退出编辑模式,输入ZZ保存并退出
输入i :进入编辑模式(插入模式),编写代码

2、三种模式:

vim编辑器有三种模式,可能大家的叫法不一样,但指的对象是应该是同一个,分别是正常模式、编辑模式(插入模式)、行底模式(命令模式)。

正常模式:一般用于阅读文件,或者使用快捷键快速修改文件内容
编辑模式(插入模式):一般用于编辑文件,输入内容
行底模式(命令模式):一般用于对vim进行配置,或者执行一些高级操作

三种模式的相互切换方式如下:
在这里插入图片描述

不同模式下有不同的使用方式,下面就介绍一下不同模式下的使用方法,具体使用还需要自己在实战中掌握。

3、正常模式

(1)光标移动

命令功能
h(小写字母)光标左移
j(小写字母)光标下移
k(小写字母)光标上移
l(小写字母)光标下移
gg光标跳转到文件开头
G光标跳转到文件末尾
n加回车光标向下n行
n-光标向上n行
nG光标跳转到第n行
vim filename +n进入文件后光标跳转到第n行

(2) 删除代码

命令功能
x (小写字母)从光标开始删除一个字符
nx从光标开始删除n个字符
dw/de从光标开始删除一个连续的字符串,两者的区别在于删除/不删除字符串后的空格
d^从光标处删除到行首
d$从光标处删除到行尾
dgg从光标处删除到文件开头
dG从光标处删除到文件末尾
dd删除光标所在行
ndd从光标处往下删除n行

(3) 复制/粘贴代码

命令功能
yy复制光标所在行
nyy从光标位置开始复制n行
p (小写字母)粘贴到光标下一行
P(大写字母)粘贴到光标上一行

注意:复制/删除的内容会存储在缓冲区中(可以跨文件使用),可以使用P/p跨文件粘贴。

(4) 替换代码

命令功能
r替换一个字符 (按下r后再按下新的字符)
cw替换一个单词
R进入替换模式(或者使用insert键)

(5) 撤销操作

命令功能
u撤销上次操作
U撤销该行所有的操作
Ctrl+r取消撤销操作

4、插入模式

(1) 进入插入模式的方式

命令功能
i在光标前进入插入模式
I光标跳转到行首,进入插入模式
a在光标后进入插入模式
A光标跳转到行尾,进入插入模式
o在当前行下面插入新行,进入插入模式
O在当前行上面插入新行,进入插入模式

(2) 插入模式下的快捷操作

快捷键功能
Ctrl+p自动补全已出现过的变量名、函数名
Ctrl+C相当于ESC键
Ctrl+J/M相当于回车键

5、行底模式

(1) 撤销操作

命令功能
w写入
q退出
q!强制退出
wq保存退出
x保存退出
X使用密码加密,注意wq保存退出才生效,ZZ只保存内容不保存属性 :set key=[空格] 去掉密码(空格替换成其他的,可以修改密码)
!cmd执行系统命令,例如:!ls
/关键词查找关键词(n往下查询,N往上查询)
%s/old/new全部替换(如果同一行存在多个,只会修改第一个)
set nu显示行号(临时设置,下次启动会恢复)
set nonu取消行号(临时设置,下次启动会恢复)
>n从光标处n行代码向右缩进一次
<n从光标处n行代码向左缩进一次

注意:在行底模式下对vim的配置都只是临时的,如果需要长期有效,需要将设置写入vim的配置文件中(~/.vimrc)

6、自定义功能

和终端一样,vim编辑器也存在配置文件。可以通过修改配置文件来自定义编辑器,如果之前没有配置过vim,配置文件需要自己创建,输入命令vim ~/.vimrc

1) 常用的vim配置

"显示行号
set number

"设置tab键的宽度
set tabstop=4

"设置自动缩进
set autoindent

"设置自动缩进的宽度
set shiftwidth=4

"设置智能缩进
set smartindent

"设置不备份
set nobackup

"设置不生成临时文件
set noswapfile

2) 自定义操作

"在插入模式下快速返回正常模式
imap jj <ESC>
这段代码的作用是在插入模式下(imap 是插入模式)绑定快捷键 jj 作为退出插入模式的快捷键,按jj等同于按ESC
注意:这段文字别复制进去了

"定义保存退出函数
func! SaveExit()
exec “wq”
endfunc

这段代码的作用是创建一个函数SaveExit(), exec “wq” 是切换到底行模式下执行wq操作,相当于 :wq,执行保存退出。
注意:这段文字别复制进去了

"映射Ctrl+z键调用保存退出函数
map <C-z> : call SaveExit()
imap <C-z> <ESC> : call SaveExit()
cmap <C-z> <ESC> : call SaveExit()

这段代码的作用是把SaveExit()函数分别在不同模式下绑定到Ctrl+z快捷键上,其中map表示正常模式,imap表示插入模式,cmap表示行底模式。由于只有在正常模式下才能使用快捷键,所以另外两个模式多了一步<ESC>的操作,从该模式退出到正常模式。
注意:这段文字别复制进去了

“添加头文件、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

这段代码的作用是创建InsertMain()函数,如果文件是以.c结尾的,就创建c语言代码模板
#include<stdio.h>

int main(int argc,const char* argv[])
{

}
注意:这段文字别复制进去了

"映射Ctrl+p
map <C-p> : call InsertMain()

这段代码的作用是在正常模式下绑定InsertMain()函数到Ctrl+p快捷键上
注意:这段文字别复制进去了

"保存编译运行
func! SaveGo()
exec “w”
if &filetype == “c”
exec “!gcc -std=gnu99 % && ./a.out”
endif
endfunc

这段代码的作用是创建SaveGO()函数,先保存文件,如果文件是以.c结尾的,就使用gcc工具以C99标准来编译该文件,并执行最终文件
注意:这段文字别复制进去了

map <C-x> : call SaveGo()
imap <C-x> : call SaveGo()
map <C-x> : call SaveGo()

这段代码的作用是把SaveGo()函数分别在不同模式下绑定到Ctrl+x快捷键上。
注意:这段文字别复制进去了

配置完成后,保存退出,就可以使用了新功能了,十分酷炫。也可以配置其他想要实现的功能。

结语

希望这篇文章对你有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值