【linux】基础开发工具(2)vim

vim是linux中的一款命令行编辑器,功能强大,几乎所有的linux发行版都会预装。类似于c++和c语言,vim是vi的升级版,兼容vi的所有命令,同时拥有自己的新特性。

vim的多模式

Vim和Vi都是多模式的编辑器,vim一共有十多种模式,不同模式集中完成不同的功能,掌握常用的几种模式就足够了。

命令模式(normal mode)

命令模式又叫普通模式,是Vim最强大的功能之一,可以实现复杂的编辑操作、文件管理和编辑器配置。输入vim加文件名之后就可以进入vim编辑页面,进入时,处于命令模式。

复制代码
xian@hcss-ecs-887f:~/lession1$ ls -l
total 4
-rw-rw-r-- 1 xian xian 327 Jul 11 14:11 code.c
-rwxrwxrwx 1 xian xian   0 Jun 29 22:55 cxk.txt
-rw-rw-r-- 1 xian xian   0 Jun 29 22:34 hh.txt
-rwxrwxrwx 1 xian xian   0 May 18 12:08 my.txt
xian@hcss-ecs-887f:~/lession1$ vim code.c

插入模式(insert mode)

在命令模式下按i可以进入插入模式,插入模式用于输入和编辑文本,是最接近普通文本编辑器的模式,也是我们以后使用最频繁的模式。

与我们平时常用的文本编辑器不同的是,在插入模式下不能通过鼠标移动光标的位置。

底行模式(last line mode)

底行模式是在命令模式下输入:进入的特殊模式。不是用来进行文本操作的,一般用来文件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。可以将底行模式看作vim的控制台或命令窗口。底行模式的命令非常丰富,接下来介绍一些常用的。

底行模式下常用的命令

:q 退出当前文件

:w 保存

把它们加到一起就是**:wq**保存并退出。再加上!表示强制(忽略系统的提示),强制保存并退出。

执行外部命令:

!+linux命令:在不退出vim的情况下执行相应命令。

显示行号:

set nu

命令模式下的命令集

打开vim,默认我们处在命令模式,此模式下输入的所有东西都会被视作命令,有的同学第一次打开vim直接开始写代码却没有反应的原因也是如此。

模式切换

当我们不知道自己处于什么模式的时候,可以尝试输出esc命令回退。

光标控制

Linux命令行操作没有鼠标的符号,这时候光标所在的位置就是我们要操作的位置。

gg :跳转到文本开始

G(shift+g) :跳转至文本结尾

n +G :跳转到第n行

$(shift+4):跳转到当前行行尾

^(shift +6):跳转到当前行行首

左右上下移动:h l k j。之前的键盘是没有方向键的,通过hlkj控制光标左右上下移动。在hjkl前面加上n就可以一次移动n格。

w:跳转到下一个单词开头

b:跳转到上一个单词开头

e:跳转到下一个单词结尾

同样的wbe也可以在前面加上n一次移动n个单词。

ctrl + b:向后移动一页

ctrl + f: 向前移动一页

ctrl + u: 向后移动半页

ctrl + d: 向前移动半页

复制粘贴

yy:复制当前行

p:在光标所在位置的下一行粘贴

n+yy:复制从当前行开始向下数n行

n+p:在光标所在位置的下一行粘贴n次

dd:剪切当前行(数据进入缓冲区,不粘贴就是删除)

n+dd:从当前开始数n行剪切

x:删除光标位置的字符

n+x:从光标位置开始向后删除n个字符

X:删除光标之前的字符

n+X:删除光标之前的前n个字符

撤销

u:撤销历史操作

ctrl+r:撤销u

u 和 ctrl+r之间可以相互撤销

退出Shell之后再重新登录不能再撤销历史命令,历史命令储存再Shell进程的PCB中,Shell进程没了,储存的历史命令被释放了。

查找

:向上查找,按n跳转到上一个单词

* :向下查找,按n跳转到下一个单词

替换

r+指定字符:将当前字符替换为指定的字符

n+r+指定字符:将光标开始处的n个字符替换为指定字符

~:大小写字符相互转换

批量化操作(v-block)

ctrl+v:进入视图模式

esc:退出

批量化注释:

ctrl+v进入视图模式

用hjkl进行区域选择

shift+i,输入//注释

esc返回

这样我们就可以批量化完成注释操作。

补充:

1.vim打开一个文件时自动定位到退出时光标的位置

2.用vim打开文件时加上数字可以直接跳转到指定行

相关推荐
HLC++7 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室8 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy11 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕12 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫13 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生13 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1114 小时前
linux基础IO
linux·运维·服务器
BelongPanda16 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯16 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983417 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器