• 【Linux】基础:Linux环境基础开发工具——vim


    【Linux】基础:Linux环境基础开发工具——vim

    摘要:vim是多模式编辑器,本文将会介绍如何用vim进行开发,需要重点需要掌握vim的模式切换与各个模式的使用,以及如何配置vim。


    一. 概述

    Linux作为一个操作系统,有着自己开发程序的方式。各位都知道,Linux主要面向的是像程序员这样的群体,因此缺少像VS或者Pycharm等那样的庞大的商用的集成开发工具。不过Linux也是可以做到,像其他IDE那样进行开发,主要的实现方式就是通过指令的形式进行完成。

    Linux环境基础开发工具包括六大板块:

    • 学习yum工具,进行软件安装
    • 掌握vim编辑器使用,学会vim的简单配置
    • 掌握gcc/g++编译器的使用,并了解其过程,原理
    • 掌握简单gdb使用于调试
    • 掌握简单的Makefile编写,了解其运行思想
    • 学习 git 命令行的简单操作, 能够将代码上传到码云上

    最后,还会通过使用Linux环境下基础开发工具,完成一个C语言的小示例——进度条

    在此将会先补充关于开发的过程,实际上开发过程是有固定的模式的,可以分为:编写代码、编译代码、调试代码、发布代码与运行、代码管理与维护。这些工作在Windows或者在macOS下会有集成开发工具IDE完成,其实Linux上也有IDE,但是在开发出IDE之前,并没有相应的集成开发工具,此时就会使用到vim进行程序的编写,也就是说vim是专门用来编写代码的。更简单的进行理解,其实vim就是一个文本编辑器,从定位上和以往我们所知的记事本没有区别。

    更具体而言,vim是多模式编辑器,因此在本文将会介绍如何用vim进行开发,重点需要掌握vim的模式切换与各个模式的使用,以及如何配置vim。

    二. vim多模式

    对于vim来说,实际上存在非常多的模式,但是在此只介绍三种模式,分别是:命令模式、插入模式、低行模式。各模式大概介绍如下:

    • 正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
    • 插入模式(Insert mode):只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
    • 末行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入

    vim可以通过键盘输入进行切换,再次先进行简单介绍。在默认情况下是进入到命令模式,当输入iao,会跳转到输入模式,在输入模式下,可以先记事本那样进行输入代码文本。在命令模式下,输入shift + : 可以进入底行模式,在底行模式下,可以进行对文件的保存,分屏等系列操作。而不管在声明情况下,都可以通过按下Esc来进切换到命令模式。还需要注意的是,底行模式与插入模式是无法相互切换的

    vim多模式

    三. 常见vim使用

    3.1 vim的打开与退出

    打开命令:vim 文件名

    关闭:在底行模式下输入shift + :qshift + :wqshift + :wq!

    vim是可以直接通过命令打开的,不过一般情况下都会vim后跟文件名来直接打开文件,如果当前目录下不存在该文件,将会创建该文件。进入vim后就进入vim全屏幕编辑画面,这时的默认模式就是命令模式,可以通过键盘完成模式切换与文本书写。当需要退出时,应在命令模式可以输入shift + :q退出,但是这样是没有保存的,需要保存并退出,应在命令模式下输入shift + :wq,如下需要强制保存则为shift + :wq!

    示例如下:

    [lht@VM-12-7-centos Blog_Develope]$ ll
    total 0
    [lht@VM-12-7-centos Blog_Develope]$ vim test.c
    [lht@VM-12-7-centos Blog_Develope]$ ll
    total 4
    -rw-rw-r-- 1 lht lht 67 Oct 29 19:14 test.c
    [lht@VM-12-7-centos Blog_Develope]$ cat test.c
    #include
    int main(){
            printf("hello vim\n");
            return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    image-20221029191524973

    3.2 插入模式

    • i切换进入插入模式「insert mode」,按i进入插入模式后是从光标当前位置开始输入文件
    • a进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
    • o进入插入模式后,是插入新的一行,从行首开始输入文字

    3.3 命令模式

    光标移动:hljk对应左右上下,可以左右两个键分别对应左右方向,lj对应上下,根据键盘结构来记忆也是较为方便的。

    光标位置锚点:

    • 定位到行首行尾:shift + ^定位到行首,shift + $定位到行尾
    • 定位到起始行与末尾行:gg定位到起始行,shift + g定位到末尾行
    • 定位到任意行:数字 + shift + g可以定位到指定行
    • 定位前后词语:w表示下一个单词,b表示上一个单词

    复制粘贴剪切:

    • 复制: yy 表示复制当前行, nyy 表示复制当前行及其后的n-1行
    • 粘贴:p表示粘贴,np 表示一次重复粘贴n行
    • 删除: dd 删除当前光标所在行,ndd表示删除n行
    • 剪切:dd 删除当前光标所在行,再带上p就表示剪切功能,ndd npp 多行的剪切与粘贴
    • 撤销: u表示撤销,通过Ctrl + r可以撤销刚刚的撤销

    文本操作相关:

    • 大小写转换:通过键盘键入shift + ~可以完成大小写的快速切换,当输入后会将当前字符更换大小写,并后移一位;
    • 字符删除:x表示向右删除,X表示向左删除,前方加入n可以进行多字符的删除
    • 替换:r可以完成替换操作,在前方加上数字n,可以进行多字符的替换
    • 替换模式:shift + r可以进入替换模式,自动删除当前字符,并替换

    3.4 底行模式

    • 保存与退出:w 保存 ,w! 强制保存 ,wq表示保存并退出,wq!强制保存并退出
    • 行号:set nonu表示关闭行号set nu表示设置行号
    • 分屏:vs + 文件名可以完成分屏操作,通过Ctrl + ww可以进行光标跳转,通过wq表示退出双屏

    四. vim配置

    对于vim来说,最初的编辑器非常像平时使用的记事本,但是可以通过配置vim的方式,让该多模式编辑器变得更加智能美观。对于vim的配置是相对用户独立的,是互不干扰的,操作系统上的每个用户,都有自己的vim配置

    配置vim主要有两种方式,分别为:修改配置文件与使用插件来表示。

    修改配置文件

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

    而修改配置文件的内容可以到网上进行搜索。

    而关于使用插件来完成配置,本文就不再介绍,读者可以通过搜索引擎查找相关教程。


    补充:

    1. 代码将会放到:Linux_Review: Linux博客与代码 (gitee.com) ,欢迎查看!
    2. 欢迎各位点赞、评论、收藏与关注,大家的支持是我更新的动力,我会继续不断地分享更多的知识!
  • 相关阅读:
    Java性能优化-书写高质量SQL的建议(如何做Mysql优化)
    面向使用者的git与gerrit相关笔记
    HackTheBox You know racecar 格式化字符串漏洞pwn题目
    数据库 | 数据库概述、关系型数据库、非关系型数据库
    x5sec滑块请求{"code":8778,"dt":"success","ec":200,"result":{"code":8778,"sig":"from bx"},"success":true}
    SQLZOO 7 More JOIN
    python用selenium网页模拟时无法定位元素解决方法1
    ArcGIS:如何利用站点数据(例如臭氧)进行克里金插值得到连续臭氧表面?
    神了,用 Python 预测世界杯决赛,发现准确率还挺高
    CSS3新增伪类有那些?
  • 原文地址:https://blog.csdn.net/qq_66725576/article/details/127625342