VI / VIM的使用

vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim vi 的升级版本,它不仅兼容 vi 的所有指令,而且
还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x window mac os
windows 。我们课堂上,统一按照 vim 来进行讲解。
1. vim 的基本概念
课堂上我们讲解 vim 的三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是命令模式( command mode )、插
入模式( Insert mode )和底行模式( last line mode ),各模式的功能区分如下:
正常 / 普通 / 命令模式 (Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
插入模式 (Insert mode)
只有在 Insert mode 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。该模式是我们后面用的最频繁
的编辑模式。
末行模式 (last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift+: 即可进入该模
式。要查看你的所有模式:打开 vim ,底行模式直接输入
:help vim-modes
我这里一共有 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 ]:进入文本末端
按「 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 操作总结
三种模式
正常模式
插入模式
底行模式
我们一共有 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<cr>
然后重启 vim, 打开 ~/XXX.c 或~ /XXX.cpp, normal 状态下输入 "wm", 你将看到上图的效果。
更具体移步: 手把手教你把Vim改装成一个IDE编程环境(图文)_vim 在编译时,显示shell-CSDN博客 , 其他手册,请执行 vimtutor 命令。
参考资料
Vim 从入门到牛逼 (vim from zero to hero)

 ~over~

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

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

相关文章

【Linux】糟糕,是心动的感觉——与Linux的初次相遇

初识Linux 导言一、计算机的发展1.1 历史背景1.2 计算机的发明 二、操作系统2.1 什么是操作系统&#xff1f;2.2 操作系统的诞生2.3 操作系统的发展2.3.1 批处理系统的发展2.3.2 分时系统2.3.3 实时系统2.3.4 通用操作系统 2.4 UNIX操作系统2.4.1 UNIX的诞生2.4.2 UNIX的发展 2…

Git学习 -- 分支合并、版本修改相关

目录 learn GIT Learn Git Branching merge和rebase的使用 基础命令 版本回退 工作区和暂存区 管理修改 撤销修改 删除修改 learn GIT Learn Git Branching 这是Gitee上的Git学习教程 Learn Git Branching Git Rebase Learn Git Branching 最终的实操 merge和rebase的…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

2024年 全新 HTTP 客户端 你用了?

我们平时开发项目的时候&#xff0c;经常会需要远程调用下其他服务提供的接口&#xff0c;于是我们会使用一些 HTTP 工具类比如 Hutool 提供的 HttpUtil。SpringBoot 3.0 出了一个Http Interface的新特性&#xff0c;它允许我们使用声明式服务调用的方式来调用远程接口&#xf…

重磅!Salesforce推出UE+无限版餐套,企业如何选择?

孤立的应用程序和脱节的技术堆栈是所有企业的噩梦。目前&#xff0c;市场上产品和服务种类繁多&#xff0c;无缝集成和清晰、直接的购买流程可以决定整体体验的成败。 Salesforce云以及其他应用程序在过去几年中经历了巨大增长。随着越来越多的功能被捆绑在一起&#xff0c;Un…

威联通QNAP NAS结合cpolar内网穿透实现公网远程访问NAS中存储的文件

文章目录 推荐 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣…

Tarjan 算法(超详细!!)

推荐在 cnblogs 上阅读 Tarjan 算法 前言 说来惭愧&#xff0c;这个模板仅是绿的算法至今我才学会。 我还记得去年 CSP2023 坐大巴路上拿着书背 Tarjan 的模板。虽然那年没有考连通分量类似的题目。 现在做题遇到了 Tarjan&#xff0c;那么&#xff0c;重学&#xff0c;开…

“趣味夕阳,乐享生活”小组活动(第二节)

立冬以来&#xff0c;天气日渐寒冷&#xff0c;气温变化较大&#xff0c;各种传染病多发&#xff0c;为进一步增强老年人冬季预防传染病保健意识及科学合理健康的生活方式。近日&#xff0c;1月22日&#xff0c;南阳市人人社工灌涨站开展了“趣味夕阳&#xff0c;乐享生活”小组…

【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器

文章目录 一、unordered系列容器的底层结构 - 哈希1. 哈希概念2. 哈希冲突 二、解决哈希冲突方法一&#xff1a;合理设计哈希函数&#x1f6a9;哈希函数设计原则&#x1f6a9;常见哈希函数 方法二&#xff1a;开闭散列&#x1f6a9;闭散列线性探测法&#xff08;实现&#xff0…

gradle打包分离依赖jar

正常打包的jar是包含项目所依赖的jar包资源&#xff0c;而且大多数场景下的依赖资源是不会频繁的变更的&#xff0c;所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身&#xff0c;减小上传的jar包总大小&#xff0c;能实现加速部署的效果 一 原本结构 二 配置buil…

第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)

文章目录 第04章_IDEA的安装与使用&#xff08;下&#xff09;8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键1、已知快捷键操作名&#xff0c;未知快捷键2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团&#xff08;证券代码&#xff1a;0022…

【Chrome】浏览器怎么清除缓存并强制刷新

文章目录 1、正常刷新&#xff1a;正常刷新网页&#xff0c;网页有缓存则采用缓存。 F5 或 刷新键2、强制刷新&#xff1a;忽略缓存刷新&#xff0c;重新下载资源不用缓存。 CtrlF5 或 ShiftF5 或 CtrlShiftR3、在浏览器的设置里面清除所有数据

freeRTOS总结(八)任务相关API函数

1&#xff0c; FreeRTOS任务相关API函数介绍&#xff08;熟悉&#xff09; UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) 获取任务优先级函数 此函数用于获取指定任务的任务优先级&#xff0c;使用该函数需将宏 INCLUDE_uxTaskPriorityGet 置 1 void vTask…

用于垃圾回收的运行时配置选项

反馈 本文内容 指定配置的方法垃圾回收的风格管理资源使用情况大型页面 显示另外 4 个 此页面包含有关 .NET 运行时垃圾回收器 (GC) 设置的信息。 如果你要尝试让正在运行的应用达到最佳性能&#xff0c;请考虑使用这些设置。 然而&#xff0c;在特定情况下&#xff0c;默认…

【动态规划】C++ 算法458:可怜的小猪

作者推荐 视频算法专题 涉及知识点 动态规划 数学 力扣458:可怜的小猪 有 buckets 桶液体&#xff0c;其中 正好有一桶 含有毒药&#xff0c;其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药&#xff0c;你可以喂一些猪喝&#xff0c;通过观察猪是否…

精通 Spring REST API:最佳实践

概述 随着数字时代的推进&#xff0c;基于Web的程序已经成为构建交互式应用的关键。客户端与服务器之间的沟通频繁依赖于通过 APIs 获取的网络服务。 使用开源框架Spring&#xff0c;开发者可以有效率地搭建Web服务。本篇文章旨在展示如何利用Spring来构筑一个REST风格的Web服…

基于Java+SpringBoot+vue+element疫情物资捐赠分配系统设计和实现

基于JavaSpringBootvueelement疫情物资捐赠分配系统设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种…

【字符串】【C++算法】828.统计子串中的唯一字符

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 子数组&#xff08;串&#xff09; 字符串 LeetCoce828.统计子串中的唯一字符 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例…

【pyqt6】用pyqt做一个点菜小程序

用pyqt做一个点菜小程序 前言1.pyqt62. 功能介绍3.程序实现 前言 在本文中&#xff0c;我们将使用 PyQt6&#xff08;Python的GUI库&#xff09;创建一个简单的点菜小程序。该程序允许用户从菜单中选择菜品&#xff0c;将其添加到订单中&#xff0c;并通过点击“下单”按钮查看…