Linux开发工具之文本编译器vim

目录

Linux编辑器-vim使用

1. vim的基本概念

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

  ●  插入模式(Insert mode)

  ●  末行模式(last line mode)

2. vim的基本操作

  ●  [正常模式]切换至[插入模式]

  ●  [插入模式]切换至[正常模式]

  ●  [正常模式]切换至[末行模式]

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

3. vim正常模式命令集

  ●  插入模式

  ●  从插入模式切换为命令模式

  ●  移动光标

  ●  删除文字

  ●  复制

  ●   替换

  ●  撤销上一次操作

  ●  更改

  ●  跳至指定的行

4. vim末行模式命令集

  ●  列出行号

  ●  跳到文件中的某一行

  ●  查找字符

  ●  保存文件

  ●  离开vim

5. vim操作总结

  ●  三种模式

  ●   vim操作

6. 简单vim配置

  配置文件的位置

  常用配置选项,用来测试

  使用插件


●IDE例子

Linux编辑器-vim使用


vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

1. vim的基本概念

本篇讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

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

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及(按下i/a/o键)进入Insert mode下,或者(同时按下ctrl+:/;)到 last line mode

●  插入模式(Insert mode)

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

●  末行模式(last line mode)

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

:help vim-modes

Linux这里一共有12种模式:six BASIC modes和six ADDITIONAL modes。

2. vim的基本操作

  ●  进入vim,在系统提示符号输入vim及文件名称(如果是不存在的文件,会创建该文件)后,就进入vim全屏幕编辑画面:

●  $ vim test.c 

●  不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文 字。

  ●  [正常模式]切换至[插入模式]

●  输入a -- 光标移到原来所处光标的下一个

●  输入i  -- 光标不用移动,当前位置输入

●  输入o -- 在当前行创建下一行,光标移动到下一行

  ●  [插入模式]切换至[正常模式]

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

  ●  [正常模式]切换至[末行模式]

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

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

●  : w (保存当前文件)

●  : wq (输入「wq」,存盘并退出vim)

●  : q! (输入q!,不存盘强制退出vim)

3. vim正常模式命令集

  ●  插入模式

●  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

●  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

●  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 

  ●  从插入模式切换为命令模式

●  按「ESC」键。

  ●  移动光标

●  vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格

●  按「G」:移动到文章的最后行的“行首”

●  按「 $ 」:移动到光标所在行的“行尾”

●  按「^」:移动到光标所在行的“行首”

●  按「w」:光标跳到下个字的开头

●  按「e」:光标跳到下个字的字尾

●  按「b」:光标回到上个字的开头

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

●  按[gg]:进入到文本开始  

●  按[shift+g]:进入文本末端的“行首”同按“G”

●  按「ctrl」+「b」:屏幕往“后”移动一页

●  按「ctrl」+「f」:屏幕往“前”移动一页

●  按「ctrl」+「u」:屏幕往“后”移动半页

●  按「ctrl」+「d」:屏幕往“前”移动半页

  ●  删除文字

●  「x」:每按一次,删除光标所在位置的一个字符

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

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

●  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符

●  「dd」:删除光标所在行,等同于剪切,按p可以粘贴所删除的行

●  「#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操作总结

  ●  三种模式

●  正常模式
●  插入模式

●  底行模式

  ●   我们一共有12种总模式,大家下来可以研究一下

  ●   vim操作

●  打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作

●   练习:最好的记忆方式就是多用多练。

6. 简单vim配置

  配置文件的位置

●  在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
●  而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。

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

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

  常用配置选项,用来测试

●  设置语法高亮: syntax on

●  显示行号: set nu

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

  使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:

●  安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来 的plugin下的内容拷贝到~/.vim/plugin

●  在~/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1

●   安装文件浏览器和窗口管理器插件: WinManager

●  下载winmanager.zip,2.X版本以上的

●  解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到 ~/.vim/plugin
●  在~/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm :WMToggle

●  然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你将看到上图的效果。 更具体移步:点我, 其他手册,请执行 vimtutor 命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/146542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

步力宝科技爆款产品定位,开创智能物联网新商业

数据显示,中国处于 “亚健康”状态人口数量约占总人口的70%,亚健康是一种临界状态,指介于健康和疾病之间的状态。亚健康是一个动态演变的过程,既有向慢病发展的趋势,也能通过合理的干预使人体重返健康状态,…

网络运营和电子商务有什么区别

大家好,我是网络工程师成长日记实验室的郑老师,您现在正在查看的是网络工程师成长日记专栏,记录网络工程师日常生活的点点滴滴 一个同学他问我,他说学网络运营的话,它是不是电子商务里面的这个东西?像电子大…

南京大学【软件分析】08 Pointer Analysis

文章目录 1. Motivation2. Introduction to Pointer Analysis3. Key Factors of Pointer Analysis3.1 Heap Abstraction3.2 Context Sensitivity3.3 Flow sensitivity3.4 Analysis scope 4. Concerned Statements 1. Motivation 指针分析存在不精确的问题。对于下面的例子&…

快排三种递归及其优化,非递归和三路划分

个人主页:Lei宝啊 愿所有美好如期而遇 目录 快排简介: 快排的三种递归实现: Hoare: 挖坑: 双指针: 小区间优化: 三数取中优化: 快排非递归实现: 快排的三路划…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

一维数组和二维数组的使用(char类型)

目录 导读1. 字符数组1.1 字符数组的创建1.2 字符数组的初始化1.3 不同初始化在内存中的不同1.3.1 strlen测试1.3.2 sizeof测试1.3.3 差异原因 1.4 字符数组的使用 2. 数组越界3. 数组作为函数参数博主有话说 导读 我们在前面讲到了 int 类型的数组的创建和使用: 一…

焕新古文化传承之路,AI为古彝文识别赋能

目录 1 古彝文与古典保护 2 古文识别的挑战 2.1 西文与汉文OCR 2.2 古彝文识别难点 3 合合信息:古彝文保护新思路 3.1 图像矫正 3.2 图像增强 3.3 语义理解 3.4 工程技巧 4 总结 1 古彝文与古典保护 彝文指的是云南、贵州、四川等地的彝族人使用的文字&am…

行为型设计模式——责任链模式

摘要 责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。 一、责任链模式意图 职责链模式(Chain Of Responsibility) 是一种行为设…

MAC手动修复『已损坏』问题 终端运行命令报错处理

安装一些第三方软件会出现已损坏的报错提醒,需要用命令sudo xattr -rd com.apple.quarantine进行修复,但是终端提示命令错误,怎么版 错误有几种: No module named ‘pkg_resources’ 这是mac电脑上python2,python3并…

mfc140u.dll是什么文件?mfc140u放在哪个文件夹?详细修复教程

今天我想和大家分享一个非常常见的问题——mfc140u.dll丢失的困扰以及解决方法。 首先,让我们来了解一下什么是mfc140u.dll。这是一个非常重要的动态链接库文件,它是Microsoft Foundation Class Library的一个组件。许多软件和游戏都需要这个文件的支持才…

Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

关于Appium V2 Appium V2 beta版本在2021年发布,从2022年1月1号开始,Appium核心团队不会再维护Appium 1.x版本了,所有近期官方发布的平台驱动(如Android平台的UIAutomator,IOS平台的XCUITest)不再兼容Appi…

Qt多线程实现方式-moveToThread及其注意事项

Qt多线程实现方式-moveToThread及其注意事项 Chapter1 Qt多线程实现方式-moveToThread一、Qt下使用线程主要有两种方法。二、Qt下创建多线程也有两种方法。三、其它问题。 Chapter2 QT多线程接收串口数据1.前言2.功能作用3.软件测试效果4.基本步骤 Chapter3 利用Qt多线程机制实…

面试打底稿⑦ 项目一的第三部分

简历原文 抽查部分 完成路线规划模块选择路线功能,用neo4j这种存储图关系的非关系数据库,实现最短线路规划、最低成本线路规划 设计优化物流信息模块,合理选择数据库、缓存技术,实现数据精简、流量削峰、提高系统可 用性 模拟问答…

Scala第十五章节

Scala第十五章节 1. 递归 2. 案例一: 求阶乘 3. 案例二: 斐波那契数列 4. 案例三: 打印目录文件 scala总目录 文档资料下载

04、EL和JSTL核心技术

目录 1 EL表达式(熟悉) 1.1 基本概念 1.2 主要功能 1.3 访问内置对象的数据 1.3.1访问方式 1.3.2 执行流程 1.4 访问请求参数的数据 1.5 访问Bean对象的属性 1.5.1 访问方式 1.5.2 主要区别 1.6 访问集合中的数据 1.7 常用的内置对象 …

uboot启动流程-涉及lowlevel_init汇编函数

一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始,从链接脚本文件 u-boot.lds 中,我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数:调用了 reset 函数,reset 函数内部&…

1、Kafka 安装与简单使用

第 1 章 Kafka 概述 1.1 定义 Kafka传统定义: Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka最新定义 : Kafka是 一个开源的 分 布式事件流平台 &#xff08…

《CTFshow-Web入门》10. Web 91~110

Web 入门 索引web91题解总结 web92题解总结 web93题解 web94题解 web95题解 web96题解 web97题解 web98题解 web99题解总结 web100题解 web101题解 web102题解 web103题解 web104题解 web105题解总结 web106题解 web107题解 web108题解 web109题解 web110题解 ctf - web入门 索…

Scala第十四章节

Scala第十四章节 1. 隐式转换和隐式参数介绍 2. 隐式转换 3. 隐式参数 4. 案例: 获取列表元素平均值 scala总目录 文档资料下载

大数据Flink(九十):Lookup Join(维表 Join)

文章目录 Lookup Join(维表 Join) Lookup Join(维表 Join) Lookup Join 定义(支持 Batch\Streaming):Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。…