当前位置: 首页 > news >正文

【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打开文件时加上数字可以直接跳转到指定行

http://www.dtcms.com/a/545521.html

相关文章:

  • 宁波找网站建设企业如何使用网络营销策略
  • 关于进一步做好网络安全等级保护有关工作的问题释疑-【二级以上系统重新备案】、【备案证明有效期三年】
  • Flink Keyed State 详解之三
  • LangChain4j学习3:模型参数
  • 驻马店做网站哪家好常州微网站建设
  • 深圳网站建设报价网站开发客户来源
  • 仓颉开发鸿蒙应用:深入理解组件生命周期的设计哲学与实践
  • Java 启动脚本-简介版
  • CFX Manager下载安装教程
  • 基于STM32HAL库判断传感器数据和系统定时器外部中断
  • 仓颉语言中的成员变量与方法:深入剖析与工程实践
  • JavaScript是如何执行的——V8引擎的执行
  • GEO:AI 时代流量新入口,四川嗨它科技如何树立行业标杆? (2025年10月最新版)
  • 【牛客刷题-剑指Offer】BM24 二叉树的中序遍历:左根右的奇妙之旅(递归+迭代双解法详解)
  • 宝山网站建设哪家好平面设计免费模板网站
  • 腾讯云 怎样建设网站免费自助建站工具
  • elasticsearch中文分词器插件下载
  • 【开题答辩全过程】以 叮叮网上图书销售管理系统为例,包含答辩的问题和答案
  • 2025—2028年教育部面47项白名单赛事汇总表(正式版)
  • IPython.display 显示网页
  • Excel怎么根据身份证号码来计算年龄?
  • 江阴网站网站建设免费的舆情网站
  • 服务间的通信之gRPC
  • php做电商网站开题报告wordpress输密码访问
  • Mybatis中# 和 $的区别
  • IDEA开发常用快捷键总结
  • SAP HANA数据库HA双机架构概念及运维
  • Blender 4K渲染背后的技术挑战
  • 镇江建设集团网站扁平化wordpress
  • 测试开发话题05---用例篇(2)