首页 > 系统相关 >C++系统编程篇——linux编辑器vim

C++系统编程篇——linux编辑器vim

时间:2024-06-09 18:03:02浏览次数:28  
标签:字符 C++ 模式 vim 光标 linux 移动 输入

Linux编辑器vim

(1)vim常用模式

  • 命令/正常模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

  • 插入模式

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。

  • 底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模 式。要查看你的所有模式:打开vim,底行模式直接输入

要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

一共有12种模式:

正常模式、插入模式、可视模式、选择模式、命令行模式、Ex 模式、替换模式、虚拟替换模式、选择模式、操作等待模式、插入正常模式、终端模式

(2)vim基本操作

①进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏编辑画面

vim test.c

②【正常模式】切换至【插入模式】

输入i进入插入模式后是从光标当前位置开始输入文件

输入a从目前光标所在位置的下一个位置开始输入文字

输入o插入新的一行,从行首开始输入文字

③【插入模式】切换至【正常模式】

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可 以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

④退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:

:w保存当前文件

:wq保存并退出vim

:q!不保存强制退出vim

(3)正常模式命令集合

①移动光标

命令

功能

「h」、「j」、「k」、 「l」

左、下、上、右

「G」

移动到文章的最后

「 $ 」

移动到光标所在行的“行尾”

「^」

移动到光标所在行的“行首”

「w」

光标跳到下个字的开头

「e」

光标跳到下个字的字尾

「b」

光标回到上个字的开头

「#l」

光标移到该行的第#个位置,如:5l,56l

[gg]

进入到文本开始

[shift+g]

进入文本末端

「ctrl」+「b」

屏幕往“后”移动一页

「ctrl」+「f」

屏幕往“前”移动一页

「ctrl」+「u」

屏幕往“后”移动半页

「ctrl」+「d」

屏幕往“前”移动半页

②删除文字

命令

功能

「x」

每按一次,删除光标所在位置的一个字符

「#x」

「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符

「X」

大写的X,每按一次,删除光标所在位置的“前面”一个字符

「#X」

「20X」表示删除光标所在位置的“前面”20个字符

「dd」

删除光标所在行

「#dd」

从光标所在行开始删除#行

③复制

命令

功能

「yw」

将光标所在之处到字尾的字符复制到缓冲区中

「#yw」

复制#个字到缓冲区

「yy」

复制光标所在行到缓冲区。

「#yy」

「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

「p」

将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

④替换

命令

功能

「r」

替换光标所在处的字符

「R」

替换光标所到之处的字符,直到按下「ESC」键为止。

⑤撤销上一次操作

命令

功能

「u」

如果误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

「ctrl + r」

撤销的恢复

⑥更改

命令

功能

「cw」

更改光标所在处的字到字尾处

「c#w」

「c3w」表示更改3个字

⑦跳至指定的行

命令

功能

「ctrl」+「g」

列出光标所在行的行号

「#G」

「15G」,表示移动光标至文章的第15行行首

(4)vim底行命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式

①列出行号

:set nu输入「set nu」后,会在文件中的每一行前面列出行号

②跳到文件中的某一行

#「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。

③查找字符

命令

功能

「/关键字」

先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止

「?关键字」

先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止

/和?查找有何区别

  • 当你输入 / 然后跟上你要查找的字符串并按回车,光标会移动到下一个匹配的字符串位置。
  • 当你输入 ? 然后跟上你要查找的字符串并按回车,光标会移动到上一个匹配的字符串位置。

④保存文件

w在冒号输入字母「w」就可以将文件保存起来

⑤离开vim

命令

功能

「q」

按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim

「wq」

一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件

(5)vim配置

①配置文件的位置

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”

例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。

切换用户成为自己执行 su ,进入自己的主工作目录,执行cd ~ 打开自己目录下的.vimrc文件,执行vim .vimrc

②常用配置选项,方便测试

设置语法高亮: syntax on

显示行号: set nu

设置缩进的空格数为4: set shiftwidth=4

③使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置

例如安装TagList插件,这里不做阐述

也可以一键式配置vim(推荐):

命令行运行:

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

下载完成后运行:source ~/.bashrc 或重启终端

标签:字符,C++,模式,vim,光标,linux,移动,输入
From: https://blog.csdn.net/m0_63596031/article/details/139564200

相关文章

  • 11 深入理解Linux文件系统与日志分析
    目录11.1深入理解Linux文件系统    11.1.1inode与block详解        1.inode和block概述        2.inode的内容        3.inode的号码        4.inode的大小    11.1.2硬链接与......
  • 服务器linux系统 Debian 更新安全补丁命令
    服务器linux系统Debian更新安全补丁命令服务器换成Debian系统了,之前用的是centos系统,不过后续不支持更新还是什么,所以换成Debian系统,拿到系统首先是update更新了,把安全补丁打到最新。收集了一些命令,自用收藏。 Debian使用来自存储库的deb软件包来管理Debian系统上软件......
  • C++ primer plus习题及解析第八章(函数探幽)
    题目:8.11.编写通常接受一个参数(字符串的地址),并打印该字符串的函数。然而,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值而等于函数被调用的次数)。是的,这是一个非常可笑的函数,但......
  • Linux之awk
    一、awk介绍1、awk工作原理   逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。   sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读......
  • 嵌入式Linux中驱动程序的基本框架
    在“嵌入式Linux中内核模块的基本框架”一文中,已经构建好了内核模块的基本框架结构,现在在该框架的基础上进一步扩展,就可以形成Linux下的字符型设备驱动基本框架,下面就详细进行讨论。在Linux系统中,设备驱动共分为三种类型,即字符型、块型和网络型。字符型设备以字节为最小操作单位,......
  • 【知识点】C++ STL 中的 iterator_traits 类
    iterator_traits讲解基本定义iterator_traits是一个模板类,用于提供与迭代器相关的类型信息。以下是iterator_traits的基本定义:#include<iterator>template<typenameIterator>structiterator_traits{typedeftypenameIterator::difference_typediffere......
  • C++题解——3320——竞选总统(信息学奥赛一本通)
    题目描述:小明想当Y国的总统,Y国大选是按各州的投票结果来确定最终的结果的,如果得到超过一半的州的支持就可以当选,而每个州的投票结果又是由该州选民投票产生的,如果某个州超过一半的选民支持小明,则他将赢得该州的支持。现在给出每个州的选民人数,请问小明至少需要赢得多少选民的......
  • LeetCode 算法:除自身以外数组的乘积c++
    原题链接......
  • Linux会像Windows一样把64个CPU核心分成一组吗
    Linux与Windows在处理器管理上存在一些差异,但两者都不会直接将64个CPU核心简单地分成一组。不过,它们都会使用各种策略和技术来优化处理器的使用,这包括如何分配进程到不同的CPU核心。Linux作为一种开源的操作系统,其内核可以运行在多种不同的硬件架构上,包括x86、ARM、PowerPC等......
  • c++的无限cmd病毒
    1.简单介绍c++的windows.h库里有很多老师不告诉你的函数,有一个函数叫MessageBox,用法如下MessageBox(...,"...","...",...);比如MessageBox(0,"点赞吧","提示",0);效果如下 还有一个函数,跟MessageBox差不多,叫MessageBoxA,使用方法为MessageBoxA(...,"...","..."......