Linux vim

文章目录

  • 一、Linux下编写代码的过程及配套软件
  • 二、vim
  • 三、vim的模式
  • 四、命令模式
  • 五、视图模式
  • 六、替换模式
  • 七、底行模式
  • 八、vim原理
  • 九、插入模式
  • 十、vim配置

一、Linux下编写代码的过程及配套软件

1.在windows中由于图形化界面外壳程序的原因,可以开发出对应的IDE(集成开发环境)

例如vs2022在其中可以写代码,编译代码,形成二进制文件,再进行链接,最后再形成

可执行二进制文件,也可以在vs2022中进行调试,进行构建

2.但是由于Linux中命令行模式外壳程序的原因,无法做出像vs2022一样的IDE,并不能

将开发工具同一集结起来,所以在Linux中开封工具都是独立的

3.Linux中的开发工具

写代码:编辑器 -- vim

编译链接代码:gcc/g++

调试:gdb/cgdb

构建工具:makefile,make,cmake

git

二、vim

1.vim是一款"超级强化记事本",核心功能和记事本一致------编辑纯文本

2.在windows中在记事本中进行文本编辑时,输入abcd1234是输入字符abcd1234,但是

在输入ctrl+c、ctrl+v时,是进行复制拷贝的并不是输入字符,那么ctrl+c、ctrl+v就可以

看作是一条命令,本质上在windows中进行文本编辑时,键盘输入会被解析为文本输入

或者是执行命令,而在执行命令时,会提高效率,那么命令越多是不是效率与越高呢?

是的,因为命令的背后是自动化和批量化,命令越多效率越高

3.vim的创作也遵守这一条准则命令的背后是自动化和批量化,命令越多效率越高,所以

vim就会主要围绕命令去设计

三、vim的模式

1.vim的模式分为命令模式、插入模式、底行模式、视图模式、替换模式

2.因为命令的背后是自动化和批量化,命令越多效率越高,所以vim中最重要的就是命令

模式

3.vim默认处于命令模式

四、命令模式

1.光标控制:

1.1 shift + g = G:光标跳转到文本最后一行的行首

1.2 gg:光标跳转到文本第一行的行首

1.3 n(数字) + shift + g:光标跳转到第n行的行首

1.4上下左右四个方向键可以控制光标上下左右移动

1.5hjkl:可以控制光标上下左右移动

h:向左移动 n + h:向左移动n个字符(从当前光标所在处开始计算)

j:向下移动 n + j:向下移动n个字符**(从当前光标所在处开始计算)**

k:向上移动 n + k:向上移动n个字符**(从当前光标所在处开始计算)**

l:向右移动 n + l:向右移动n个字符**(从当前光标所在处开始计算)**

1.6wb以"单词"为单位进行光标移动

"单词":

(1)字母、数字、下划线视为"单词字符",连续的这类字符会被认为是一个单词

(2)符号(非单词字符)单独或连续出现时,也会被视为一个"符号单词"

w:以"单词"为单位,向右移动

n + w:以"单词"为单位,向右移动n个单词

b:以"单词"为单位,向左移动

n + b:以"单词"单位,向左移动n个单词

2.其余命令:

2.1 yy:赋值当前一行 n + yy:从当前行开始赋值n行

2.2 p:粘贴到当前行的下一行 n + p:从当前行的下一行开始粘贴n次n行

2.3 dd:删除当前行 n + dd:从当前行开始删除n行

2.4 shift + ` = ~:快速进行大小写转换

2.5 r:替换光标所在位置的一个字符 n + r:从当前光标开始向右一共替换n个字符为某个

字符

2.6 shift + r = R:从命令模式转换为替换模式,批量化的内容替换

从替换模式返回命令模式Esc按键

2.7 x:删除当前光标所在位置的一个字符

n + x:从当前光标开始向右删除n个字符

2.8 shift + x = X:以当前光标为锚点删除左边的一个字符

n + shift + x:以当前光标为锚点删除左边的n个字符

x与shift + x形成互补的局面

2.9 u:撤销操作,撤销上一次的命令行为

ctrl + r:对u撤销进行撤销,也就是恢复

因为ctrl + r也是一条命令,所以再使用u就可以撤销掉ctrl + r命令的行为

只要没有退出vim,随时可以进行撤销,但是一旦退出vim就无法进行撤销

五、视图模式

1.ctrl + v进入视图模式,从视图模式返回命令模式Esc案件

2.视图模式作用:可以使用光标控制命令选择区域,然后进行对选择区域的统一文本处理

3.例子:批量化注释和批量化去注释

3.1批量化注释

(1)ctrl + v

(2)hjkl选择区域

(3)shift + i = I

(4)//

(5)Esc

3.2批量化去注释

(1)ctrl + v

(2)hjkl选择区域

(3)d

六、替换模式

1.shift + r = R:从命令模式转换为替换模式,批量化的内容替换

从替换模式返回命令模式Esc按键

2.替换模式时,直接从光标的位置开始输入,光标位置原本的字符会被替换为刚刚新写的

字符

七、底行模式

1.底行模式:进行输入命令,之所以称作底行模式是因为,输入命名和反馈都在这一行

2.shift + ; = :从命令模式进入底行模式,从底行模式返回命令模式使用Esc

3.命令:

3.1 set nu:显示行号 set nonu:关闭行号

3.2 w:保存 w!:强制保存

3.3 q:退出 q!:强制退出

wq!:强制保存退出

3.4 /key + n(搜索命令):

按 Enter 执行搜索

此时Vim会高亮显示所有匹配项,并将光标定位到第一个匹配处

n(查找下一个)

在正常模式下按n,Vim会跳转到下一个匹配项如果你在文件末尾,会循环回到文件开头继

续搜索

3.5 !com:直接在第行模式中执行Linux指令,这样可以使得我们在不退出vim的情况下

使用gcc/g++指令编译代码

3.6 %s/dest/src/g:将全局中的所有src替换为dest

3.7 vs 文件名:分屏操作,分屏打开另一个文件,ctrl + ww就可以在不同的屏中进行来回

切换,多文件代码

3.8在命令模式中可以使用shift + zz直接退出vim,shift + zz == wq

3.9当vim退出时,光标在哪里,再次打开vim时,光标就还在哪里

八、vim原理

1.编辑新文件

文件不存在 → Vim 在内存中创建空缓冲区

:w 保存时才会实际创建文件

直接 :q 退出不会创建文件

2. 编辑已存在文件

文件内容加载到内存缓冲区

自动创建 .existing.txt.swp 隐藏交换文件(这里面会实时记录编辑内容)

所有编辑操作都在内存中进行

3. 保存机制

内存内容写入临时文件(如 .existing.txt.1234

临时文件重命名为原文件名

删除旧的 .swp 文件(正常退出时)

4. 异常退出处理

.swp 文件保留在磁盘

下次使用vim大概该文件时会提示:

R(Recover) - 从 .swp 恢复未保存内容

D(Delete) - 删除 .swp,放弃恢复

Q/Abort - 退出,不操作文件

注意:恢复后 .swp 文件不会自动删除(需手动删除)

九、插入模式

1.由命令模式进入插入模式可以使用a、i、o三种命令

|---------|---------------|---------------|--------------|
| i | insert | 在当前字符前插入 | 光标所在位置之前 |
| a | append | 在当前字符后插入 | 光标所在位置之后 |
| o | open line | 在下方新建一行插入 | 当前行的下方新行 |

十、vim配置

1.vim和ls,mkdir一致都是一种指令一个软件,而我们想要配置vim时就需要在当前用户

的家目录中创建一个临时文件.vimrc,然后再将配置项写入到该隐藏文件当中,因为vim

在启动时会去对应用户的家目录中读取对应的.vimrc配置文件读取其中的配置向作为vim

启动时默认配置,所以对于不同的用户,虽然调用的是同一个路径下的vim,但是由于隐藏

文件.vimrc配置文件中的配置项不同最终所形成的vim也不同,这也符合不同用户用各自所

需要的配置的编辑器

相关推荐
Evan芙1 小时前
OpenEuler系统网卡地址定制
运维·服务器·网络
a***97681 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
PS1232321 小时前
交通基础设施安全守护者 超声波风速风向传感器桥梁与隧道风速监测
大数据·服务器·人工智能
拾忆,想起1 小时前
Dubbo序列化方式全解析:从原理到实战的性能优化指南
服务器·网络·微服务·性能优化·架构·dubbo
kwg1261 小时前
Dify二次开发构建api后端Docker离线镜像方案
服务器·人工智能·python
初圣魔门首席弟子1 小时前
网络编程所有通信方式总结 C++ 实现模板(基于 C++11+)
运维·服务器
a***81391 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang
IT 前端 张1 小时前
Uni-app 实现全局无操作监听:自动退出弹窗倒计时功能
运维·服务器·uni-app
R***z1011 小时前
【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则
运维·服务器·安全