vim的基本操作

news/2024/7/21 12:53:34 标签: vim, 编辑器, linux

image-20221117223808880

文章目录

    • 命令/普通模式(Normal mode)
      • 移动光标
        • 上下左右
        • 其余移动光标
      • 文本操作
        • **进入替换模式:shift+r=R**
    • 插入模式(insert mode)
    • 底行模式(last list mode)
    • vim的配置
        • vim一键配置

vim_2">vim是什么

简单理解:vi/vim都是多模式文本编辑器,但vim是vi的升级版本。vim是可运行在x window 、mac os、windows的多模式编辑器

vim快捷键键位图

image-20221117185052111

vim_10">vim的模式

vim有很多种模式,但常见的模式有三种:命令/正常/普通模式(Normal mode);插入模式(insert mode);末行模式(last list mode);下面是三种模式的切换概览:

image-20221117185839296

image-20221117190919332

这个时候发现我们敲打键盘并不能像平时用记事本那样输入。这时候我们按i-就能进入插入模式!

image-20221117191145719

我们可以看到左下角会显示**–INSERT–**就说明进入插入模式!进入插入模式后就能像利用记事本那样输入了。

当我们想进入底行模式或者输入完想退出时,按键盘左上角Esc就能回到命令模式!

回到命令模式后按住shift+:【:是键盘上L右边的那个键】就能进入底行模式!

image-20221117191536072

进入底行模式就能看到左下角显示这个**:**

想回退到命令模式就按Esc!

🆗现在三种模式的切换讲述完毕

现在我们进入到命令模式的介绍。

命令/普通模式(Normal mode)

vim是没有鼠标操控的编辑器,所以我们要用命令来移动光标。

移动光标

上下左右

我们可以用键盘上的上下左右移动光标也可以用键盘上的

小写字母【h】:向左移动【j】:向下移动【k】:向上移动【l】:向右移动—来移动光标

image-20221117193332044

那怎么在不熟练的情况下记忆呢

按h在里面的最左边不用说了向左
按j联想单词jump—往下跳—向下向下
按k联想单词king—高高在上—向上向上
按l在里面的最右边不用说了向右

这下能记住了吧

其余移动光标

+号不用按,这里用作连接表示

按shift+$ ——shift+4移动到光标所在行的“行尾”:行右
按shift+^——shift+6移动到光标所在行的“行首”:行左
按gg——{连点两下小写g}进入文本开头
按shift+g——G进入文本末端
按n+shift+g——G跳转光标到指定第n行开头;n是行号
按w光标跳到下个单词的开头
按e光标跳到下个单词的字尾
按b光标跳到上个单词的开头
以上是常见移动光标的指令如果觉得不够用可以上百度查噢

image-20221117194739819

文本操作

+号不用按,这里用作连接表示

按 u撤销(可多次按)
按ctrl+r撤销的恢复(可多次按)
按ctrl+g显示光标所在行的行号
按yy复制光标所在行(一行)
按n+yy复制n行:从光标所在行起往下复制n行的内容
按 p粘贴一次复制内容
按n+p粘贴n次复制内容
按dd删除光标所在行
按n+dd从光标所在行起往下删除n行
dd+p剪切一次刚刚删除的内容(有剪才有切-有删除才有剪切)
按ndd+p剪切n次刚刚删除的内容
按c+w从光标位置往后删除当前单词或字符并进入插入模式
按c+n+w从光标位置往后删除n个当前单词或字符并进入插入模式
按 x——小写x从光标所在位置起往后删除一个字符
按 n+x从光标所在位置起往后删除n个字符
按shift+x——大写X从光标所在位置起往前删除一个字符
按n+shift+x——n+大写X从光标所在位置起往前删除n个字符
按shift+~ ——1左边那个字符~(文本大小写切换)从光标往后的小写转大写/大写转小写
按n+r+字符——比如我按3+r+a那么从当前光标往后的三个字符都变为a局部替换文本
shift+r——R进入替换模式可以整体替换

按住shift+~演示

按住shift+~

进入替换模式:shift+r=R

进入替换模式后可以看到左下角有–REPLACE–

image-20221117205555039

进入替换模式后在文本上输入导致文本替换!演示如下:
按shift+r进入替换模式后替换文本:

shift+r

插入模式(insert mode)

按i进入插入模式
按a从光标所在位置的下一个位置进入插入模式
按o从光标所在行的下一行进入插入模式

底行模式(last list mode)

进入底行模式:在命令模式按shift+:

进入底行模式后输入命令:

输入set nu显示行号
set nonu不显示行号
wq保存并退出
w!强制保存
q!强制退出(不保存当前修改)
wq!强制保存并退出

下面是**按shift+:**进入底行模式后输入set nu 和 set nonu的演示

set nu或nonu

vs+文件名——比如我输入vs trx.test那么会在当前界面分出另一个vim文本(trx.test) 分出来后光标在新的文本,当然光标只能在一个文本,所以只能操控一个文本,想要操控别的文本需要光标切换文本【另: 当然多次vs也可以分出多个文本】
ctrl+ww——ctrl+点击两次ww光标切换文本
按**!**不退出vim切换到linux界面;随后按任意键回到vim
!+ 指令可以不退出vim切换到linux界面并执行指令
%s/destination/source/g把当前文本的所有destination换成source;【比如%s/printf/cout/g—把当前文本的所有printf替换为cout】

vs演示

vs

%s/printf/cout/g

%s替换

vim_169">vim的配置

1.在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。

2.而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。

3.切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~

4.打开自己目录下的.vimrc文件,执行 vim .vimrc

具体怎么配置呢?

第一步:查看有没有.vimrc文件,没有就创建(xxx为你自己用户名字)

image-20221117220622693

第二步:把需要的指令输入到.vimrc文件里(至于想要什么配置要去网上查噢)

1.修改.vimrc文件:vim .vimrc 把指令写进去并保存

比如image-20221117221550437

2.回到Linux界面:输入source .vimrc 等待它生效(如果发出生效错误说明指令不行~)

然后去vim个文件输入等待看看有没有生效 比如创建文件test.c并vim它看有没有配置好的效果

但是!现在都不需要了,现在有一键配置!

vim_197">vim一键配置

我们可以进入gitte搜:vimforcpp

image-20221117222742332

点进去然后在下面找到

image-20221117223339486

当然我已经复制过来了:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

把上面的一串输入到Linux里

image-20221117222854586

按回车,然后输入root密码等待安装就好了;然后我们按照要求重启一下云服务器;然后在随意vim一个文件就能看到这样,那么就是vim的一键配置完成拉!

image-20221117223117512

好啦,关于vim的保姆级教学就到这里,制作不易,看到这里的观众老爷们点点点赞关注收藏走一波~


http://www.niftyadmin.cn/n/9530.html

相关文章

链表oj题(第一弹)

通过前两篇博客我们了解了链表的实现,那么今天我们来看看链表的oj题是如何完成的。 1、移除链表元素 题目要求我们删掉与val相同的节点。 方法一:我们可以写一个循环,首先创建两个节点,一个头节点,一个尾节点&#x…

【BOOST C++ 13 并行编程】(4) Futures和 Promises线程

一、说明 Futures 和 Promises 是将数据从一个线程传递到另一个线程的工具。虽然这也可以通过其他功能来完成,例如全局变量、futures 和 promises 在没有它们的情况下也能工作。此外,您不需要自己处理同步。 未来是一个从另一个线程接收值的变量。如果您…

Isaac-gym(5):关于强化学习

官方链接: https://github.com/NVIDIA-Omniverse/IsaacGymEnvs 1、环境建立示例 import isaacgym import isaacgymenvs import torchenvs isaacgymenvs.make(seed0, task"Ant", #对应执行时用到的名称num_envs2000, sim_device"cuda:0"…

Mybatis-plus如何快速实现动态数据源切换?

Mybatis-plus多数据源处理 1 背景 ​ 通常一个系统只需要连接一个数据库就可以了。但是在企业应用的开发中往往会和其他子系统交互,特别是对于一些数据实时性要求比较高的数据,我们就需要做实时连接查询,而不是做同步。这个时候就需要用到多…

C++ opencv图像直方图

1.图像直方图概念 图像有很多基础概念,在我们学习的过程中因为一些原因无法涉及,但这并不代表它们不重要 今天,我们就来介绍一个概念——图像直方图 图像直方图,是图像处理中很重要的一个基础概念, 有很多的算法&…

学会Python开发的第一步:写一个桌面小程序

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 当使用桌面应用程序的时候,有没有那么一瞬间, 想学习一下桌面应用程序开发? 建议此次课程大家稍作了解不要浪费太多时间, 因为没有哪家公司会招聘…

使用Android辅助功能AccessibilityService实现微信自动聊天【外挂插件】

本文是使用Android辅助功能AccessibilityService实现微信自动聊天demo; 只是为了跟深入的了解Android辅助功能, 提高自身的动手能力。 请勿用于商用,或非法用途。 动手前,基本的准备要求: 聊天机器人app demo,去操作…

vue拼接html中onclick的触发方式失效的解决方法

1.原来的代码如下&#xff0c;但是点击触发事件不起作用 var html <a class"pzid" onclick"dj()" >点击</a> document.getElementById("dtTable").innerHTML html ;2.可修改为 var html <a class"pzid" id"…