• Linux开发工具:vim的介绍和用法及其简单配置


    前言

    Vim 简介. 编辑. Vim是从 vi 发展出来的一个文本编辑器。. 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。. [1] vim的设计理念是命令的组合。. 用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。. 同时VIM与很多快捷键设置和 正则表达式 类似,可以辅助记忆。. 并且vim针对程序员做了优化。

    给大家看一个vi/vim键盘图

    等我们能够练到图片上的这种程度那肯定都是大佬级别的存在了,好了,废话不多说了,我通过centos7的云服务器为例来简单介绍一下vim的基本用法。

    Linux编辑器——vim的使用

    1.vim的基本概念和基本操作

    vi/vim其实就是一款文本编辑器,用起来其实跟我们windows下的记事本有点像,但是功能要比记事本更强大一点,vim是一款多模式的文本编辑器。    我们下面讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

    • 正常/普通/命令模式(Normal mode)

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

     部分案例截图

    我这里提前创建了一个test.c文件,然后用vim编辑该文件

    输入命令:

    vim  文件名 

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

                                                                 命令模式

    当前模式就是我们的正常/普通/命令模式(Normal mode),这时候我们暂时不能输入任何想要编辑的内容,我们可以通过该模式执行相应的命令。

    下面如果我们想要对该文件进行文本编辑就需要切换到另一种模式,那就是

    • 插入模式(Insert mode)

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

    从之前的命令模式切换成相应的插入模式的方式有很多,下面是三种常用的命令模式转插入模式的指令,在命令模式下我们可以输入

    a      在当前光标的下一个位置进行插入

    i       在当前光标位置进行插入

    o      当前光标位置新起一行进行插入

                                                                插入模式

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

    当前状态是我们从命令模式下切换到插入模式,然后如果我们要从插入模式切回命令模式直接输入

    键盘最左上角的按键

    ESC

    然后就是我们vim的第三种模式:

    • 末行模式(last line mode)

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

    「shift + ;」, 其实就是输入「:」

                                            底行模式

    • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
      • : w(保存当前文件)
      • : wq(保存并退出vim)
      • : q! (输入q!  不保存强制退出vim)
      • :set nu(给vim设置行号)
      • :!+命令(可以在不退出vim的情况下执行命令)

    底行模式下输入:wq 回车后

    一共有12种模式:six BASIC modes和six ADDITIONAL modes

    以上三种的模式切换总结来说就是

    2.vim正常模式命令集

    • 插入模式
      • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
      • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
      • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
    • 从插入模式切换为命令模式
      • 按「ESC」键
    • 移动光标
      • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
      • 按「G」:移动到文章的最后
      • 按「 $ 」:移动到光标所在行的“行尾”
      • 按「^」:移动到光标所在行的“行首”
      • 按「w」:光标跳到下个字的开头
      • 按「e」:光标跳到下个字的字尾
      • 按「b」:光标回到上个字的开头
      • 按「#l」:光标移到该行的第#个位置,如:5l,56l
      • 按[gg]:进入到文本开始
      • 按[shift+g]:进入文本末端
      • 按「ctrl」+「b」:屏幕往“后”移动一页
      • 按「ctrl」+「f」:屏幕往“前”移动一页
      • 按「ctrl」+「u」:屏幕往“后”移动半页
      • 按「ctrl」+「d」:屏幕往“前”移动半页

    • 复制
      • 「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行行首。

    3.vim底行模式命令集

    • 列出行号
      • 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
    • 跳到文件中的某一行
      • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
    • 查找字符
      • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
      • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
    • 保存文件
      • 「w」: 在冒号输入字母「w」就可以将文件保存起来

    4. vim操作总结

    • 三种模式
      • 正常模式
      • 插入模式
      • 底行模式
    • vim操作
      • 打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

    5.简单vim配置

    配置文件的位置

    • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
    • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,
    • 通常已经存在一个.vimrc文件,如果不存在,则创建之。
    • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
    • 打开自己目录下的.vimrc文件,执行 vim .vimrc

    常用配置选项,用来测试

    • 设置语法高亮: syntax on
    • 显示行号: set nu
    • 设置缩进的空格数为4: set shiftwidth=4

    6.vim参考文献资料

    vim从入门到精通(vim from zero to hero)

  • 相关阅读:
    C++多继承(实际开发不建议使用)
    北斗导航 | 基于GPS/BDS多星座加权因子图优化的行人智能手机导航
    写一个带参数的宏MIN(x, y),这个宏输入两个 参数并返回较小的一个。
    Java内存模型之happens-before
    MYSQL的Java操作器——JDBC
    教育行业SaaS应用管理平台解决方案:助力企业实现经营、管理一体化
    什么是关系数据库,你知道吗?
    锁降级 ReentrantReadWriteLock
    K8s Docker实践二
    hive3.1decimal计算详细逻辑
  • 原文地址:https://blog.csdn.net/weixin_63181097/article/details/133831453