Vim入门教程vimtutor1.7总结

vimtutor命令可以打开教程文档

原文特别提示 ⬇⬇⬇

特别提示:切记您要在使用中学习,而不是在记忆中学习

Vim模式

  • 正常模式(Normal Mode):默认模式,可以使用基础命令进行操作
  • 命令模式(Command Mode)::起手,可以使用比正常模式更加复杂的命令进行操作
  • 插入模式(Insert Mode):主要用于编写文档
  • 可视模式(Visual Mode):模拟鼠标选中内容
  • 替换模式(Replace Mode):用于替换字符

默认规则

  • Crtl组合键无需区分大小写
  • <key>表示某个按键
  • 所有的:命令都需要以<Enter>结束
  • 未特别说明的操作均在正常模式下执行
  • operator [number] motion操作符 [数字] 移动命令表示对numbermotion所扫过的区域进行operator操作,number可选,例如d4wc2e

Lesson 1

vim file_name:编辑文件
hjkl:分别用于向左、向下、向上、向右移动光标,方向键hjkl具有相同功能,3j表示光标向下移动3行
:q!:放弃所有修改并强制退出编辑器
x:用于将光标所在位置字符删除,3x表示删除光标位置及其之后的共3个字符
i:切换为插入模式
A:用于向该行末尾追加内容,会自动转为编辑模式并将光标置于光标所在行末尾
:wq:用于保存并退出编辑器
<Esc>:将切换为正常模式,并撤销一个不想输入或部分完整的命令
数字 + 方向键或hjkl:将光标向某个方向移动n次

Lesson 2

w:从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
e:从当前光标当前位置直到单词末尾,包括最后一个字符
0:从当前光标当前位置移动到行首
$:从当前光标当前位置直到当前行末

2w:光标向后移动到第二个单词首字符
3e:光标向后移动到第三个单词末尾
4$:光标向后移动到第四行行尾

dw:将光标所在位置的单词删除
d2w:删除两个单词
d$:将光标所在位置及该位置至所在行末尾的所有字符删除
de:将光标所在位置及该位置至所在单词末尾的所有字符删除
d0:将光标所在位置及该位置至所在行首字符的所有字符删除

dd:删除整行
2dd:删除两行

U:撤销上次对某一行的修改(不包括整行删除、整行插入),U会撤销U本身,U只能撤销最新一次修改
u:撤销上一次编辑命令,包括U但不包括uCtrl r
Ctrl r:重做上一次命令,包括U但不包括uCtrl r

Lesson 3

粘贴
p:将最后一次删除的内容粘贴至光标之后,若为d$等非完整行内容,以字符为单位直接粘贴在光标之后,若为dd等完整行内容,以行为单位向下粘贴在新的行

替换
rc:c为任意字符,r会替换光标所在位置字符,c为指定的替换后的内容

修改
cw:删除光标至单词末尾字符,并切换为插入模式
c$:删除光标至行末尾字符
c4l:删除光标及其右边紧邻的共计4个字符,并切换为插入模式

Lesson 4

光标移动
gg:光标跳转至第一行
G:光标跳转至最后一行
5G:光标跳转至第5行

文件状态
Ctrl G:在最下方显示文件状态信息以及当前光标所在位置

查找
/str:自上而下查找字符串,str为要搜索的任意字符串
/str\c:自上而下查找字符串,str为要搜索的任意字符串,查找时忽略大小写
?str:自下而上查找字符串,str为要搜索的任意字符串
n:查找下一个满足条件的字符串
N:查找上一个满足条件的字符串
Ctrl O:返回到上一个查找位置
Ctrl I:返回下一个查找位置
%:配对括号查找,对光标所在位置的()[]{}使用该命令可以将光标跳到与之配对括号的的位置,可以用于在程序调试时查找不配对括号

替换
:s/old/new:将光标所在行的第一个old字符串替换为new
:s/old/new/g:将光标所在行所有的old字符串替换为new
:n1,n2/old/new/g:将[n1, n2]间的所有的old字符串替换为new
%s/old/new/g:将整个文件中所有的old字符串替换为new
:%s/old/new/gc:将整个文件中的old字符串替换为new,且每次替换前要确认(confirm)是否进行替换

Lesson 5

执行外部命令
:!command:在VIM内执行外部命令需要以:!为开头,command为任意外部命令,包括带命令行参数的命令,支持空命令:!

保存
:w filename:保存为filename文件。filename为文件名,若省略文件名则保存文件到当前
v motion :w FILENAME:部分保存,使用v切换为可视模式,以光标所在位置为起始位置,使用光标移动选择要保存的部分内容,直到下次使用:会触发:'<,'>,继续输入w filename可以保存为filename文件

可视模式
v:进入可视模式,移动光标可以选中内容,可以对选中的高亮内容进行操作,如d可以删除选中内容,c可以删除选中内容并切换为插入模式

提取与合并
:r filename:将filename文件的内容以行为单位粘贴至光标下方
:r !command:将command命令的结果以行为单位粘贴至光标下方,如:r !ls

Lesson 6

插入
o:在光标下方新开一行,并将光标移动至新开行行首,切换模式为插入模式
O:在光标上方新开一行,并将光标移动至新开行行首,切换模式为插入模式
i:保持光标不动,切换至插入模式
a:将光标向后移动一个字符,并切换至插入模式
A:将光标移动至行尾,并切换至插入模式
注:使用<Esc>退出插入模式时光标会在本行向左移动一个字符,若已在第一个字符则不会移动

替换
R:切换至替换模式,替换模式与插入模式类似,区别在于插入模式中每个输入的字符都会替换光标原本所在位置的字符

复制
y:将内容以字符为单位进行复制,使用p可以粘贴到光标位置之后,例如yw,或者切换至可视模式复制高亮内容

设置
:set ic:set ignorecase:ignore case,设置查找或者替换忽略大小写
:set noic:not ingore case,设置查找或者替换不忽略大小写

:set hls:set hlsearch:高亮显示所有的匹配短语
:set is:set incsearch:增量搜索
注:在选项前加no可以关闭设置

Lesson 7

帮助
<HELP><F1>:help:使用在线帮助系统
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
:help vimrc-intro

补全功能
首先确保VIm不是在以兼容模式运行:set nocp,在命令模式下输入部分命令:command,例如部分:!ls /root:!dirset number

<TAB>:自动选取一个补全命令
Ctrl D:列出补全备选向

Vim启动脚本
使用vimrc文件自定义VIm配置,下面是Vim风格的文件编辑方式:

  1. 开始编辑 vimrc 文件
:edit ~/.vimrc          这是 Unix 系统所使用的命令
:edit $VIM/_vimrc       这是 MS-Windows 系统所使用的命令
  1. 将示例文件复制过来

vimrc_example.vim通常位于/usr/share/vim/vimXXX文件夹下

:r $VIMRUNTIME/vimrc_example.vim
  1. 保存文件
:write

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

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

相关文章

阿里云国际版云服务器防火墙怎么设置呢?

入侵防御页面为您实时展示云防火墙拦截流量的源IP、目的IP、阻断应用、阻断来源和阻断事件详情等信息。本文介绍了入侵防御页面展示的信息和相关操作&#xff0c;下面和012一起来了解阿里云国际版云服务器防火墙设置&#xff1a; 前提条件 您需要先在防护配置页面&#xff0c;开…

vscode debug python 带参数

两种方法 第一种&#xff1a; 1&#xff0c;侧边栏选择运行和调试 2&#xff0c;请先创建一个launch.json文件 3&#xff0c;并选择配置文件为python文件 此时你的工作目录下会多一个目录.vscode和该目录下一个launch.json文件&#xff0c;该文件则配置了你的debug配置。在…

【报错】ModuleNotFoundError: No module named ‘websocket‘

1 报错 ModuleNotFoundError: No module named websocket 2 解决方法 pip install websocket 1 报错 AttributeError: module websocket has no attribute enableTrace 2 分析 一般是由于websocket的依赖包没有安装造成的。websocket.enableTrace()方法是在websocket-cli…

C语言第十课----------------扫雷----------数组的经典练手题

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; &#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382;…

React构建的JS优化思路

背景 之前个人博客搭建时&#xff0c;发现页面加载要5s才能完成并显示 问题 React生成的JS有1.4M&#xff0c;对于个人博客服务器的带宽来说&#xff0c;压力较大&#xff0c;因此耗费了5S的时间 优化思路 解决React生成的JS大小&#xff0c;因为我用的是react-router-dom…

ORA-01034: ORACLE not available、ORA-27101: shared memory realm does not exist

发生缘由 学习 Oracle 的使用&#xff0c;结果关机之后重新使用 SQLPlus 发现无法登录 -- windows server 2003 使用 sqlplus连接oracle报错 C:\Documents and Settings\Adminstrator> sqlplus system/linxuan ORA-01034:ORACLE not available ORA-27101:shared memory r…

SAP FIORI Launchpad 403 forbidden error

问题&#xff1a; 在前台输入/N/UI2/FLP 浏览器显示 403 forbidden 查阅资料得知 相关sicf 的服务未激活 note:3011106 检查以下所有服务是否已在事务代码 SICF 中激活&#xff1a; /default_host/sap/bc/ui2/nwbc/ /default_host/sap/bc/ui2/start_up /default_host/sap…

prometheus告警发送组件部署

一、前言 要实现Prometheus的告警发送需要通过alertmanager组件&#xff0c;当prometheus触发告警策略时&#xff0c;会将告警信息发送给alertmanager&#xff0c;然后alertmanager根据配置的策略发送到邮件或者钉钉中&#xff0c;发送到钉钉需要安装额外的prometheus-webhook…

模拟实现消息队列(以 RabbitMQ 为蓝本)

目录 1. 需求分析1.1 介绍一些核心概念核心概念1核心概念2 1.2 消息队列服务器&#xff08;Broker Server&#xff09;要提供的核心 API1.3 交换机类型1.3.1 类型介绍1.3.2 转发规则&#xff1a; 1.4 持久化1.5 关于网络通信1.5.1 客户端与服务器提供的对应方法1.5.2 客户端额外…

一站式FlinkSpark平台解决方案——StreamX

随着Flink&Spark生态的不断完善&#xff0c;越来越多的企业选择这两款组件&#xff0c;或者其中之一作为离线&实时的大数据开发工具&#xff0c;但是在使用他们进行大数据的开发中我们会遇到一些问题&#xff0c;比如&#xff1a; 任务运行监控怎么处理&#xff1f;使…

【LangChain概念】了解语言链️:第2部分

一、说明 在LangChain的帮助下创建LLM应用程序可以帮助我们轻松地链接所有内容。LangChain 是一个创新的框架&#xff0c;它正在彻底改变我们开发由语言模型驱动的应用程序的方式。通过结合先进的原则&#xff0c;LangChain正在重新定义通过传统API可以实现的极限。 在上一篇博…

一文读懂!一年耗能堪比2个三峡电站的大数据中心,背后竟隐藏着这些秘密......

全国大数据中心1年的能耗规模相当于2个三峡电站一整年的发电量&#xff0c;这是为什么&#xff1f; 大数据中心每耗费1度电&#xff0c;只有一半用在了“计算”上面&#xff0c;其他的都应用在散热、照明等方面到底是怎么回事&#xff1f; 为什么说在算力上每投入1元&#xff0…

【二】数据库系统

数据库系统的分层抽象DBMS 数据的三个层次从 数据 到 数据的结构----模式数据库系统的三级模式&#xff08;三级视图&#xff09;数据库系统的两层映像数据库系统的两个独立性数据库系统的标准结构 数据模型从 模式 到 模式的结构----数据模型三大经典数据模型 数据库的演变与发…

【系统软件03】centos7安装和使用node-v18.16.0(centos7升级glibc 2.28)

【系统软件03】centos7安装和使用node-v18.16.0&#xff08;centos7升级glibc 2.28&#xff09; 前言&#xff1a;本文是解决node 18.16.0的依赖问题&#xff0c;具体的node安装流程&#xff0c;可以参考我的另外一篇文章。一、下载node v18.16.0二、下载glibc2.28&#xff08;…

uniapp使用阿里矢量库

然后解压复制全部到你的项目文件 最后只要这几个 然后引入 最后在你需要的页面使用

LeetCode 2813. Maximum Elegance of a K-Length Subsequence【反悔贪心】2582

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

JavaWeb中Json传参的条件

JavaWeb中我们常用json进行参数传递 对应的注释为RequestBody 但是json传参是有条件的 最主要是你指定的实体类和对应的json参数能否匹配 1.属性和对应的json参数名称对应 2.对应实体类实现了Serializable接口&#xff0c;可以进行序列化和反序列化&#xff0c;这个才是实体类转…

黑马项目一阶段面试58题 Web14题(二)

八、内连接和外连接查询有什么区别 内连接 获取两表的交集部分 外连接 获取某表的所有数据&#xff0c;以及两表的交集数据 九、事务管理的作用&#xff0c;四大特性 作用 保证多个增删改的操作&#xff0c;要么同时成功&#xff0c;要么同时失败 四大特性 1.原子性 事…

Ajax同源策略及跨域问题

Ajax同源策略及跨域问题 同源策略ajax跨域问题什么是跨域&#xff1f;为什么不允许跨域&#xff1f;跨域解决方案1、CORS2、express自带的中间件cors3、JSONP原生JSONPjQuery发送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略&#xff08;Same-Origin Policy&#…

Kotlin入门:程序的逻辑控制——03

一、程序的逻辑控制 程序的执行语句主要分为3种&#xff1a;顺序语句、条件语句和循环语句。 二、if条件语句 if表达式在Kotlin中用于根据条件执行不同的代码块。它有两种形式&#xff1a;普通if和带返回值的if。 普通if语句&#xff1a; 普通的if语句由关键字if、一个布尔表达…