Vim命令记录

2024-09-08 04:58
文章标签 命令 记录 vim

本文主要是介绍Vim命令记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019年4月26日22:46修改
好玩网站:https://coolshell.cn/articles/5426.html
http://c.biancheng.net/view/813.html

vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式。普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。命令行模式中输入wq回车后保存并退出vim。

在这里插入图片描述

使用vim命令进入vim界面

vim后面加上你要打开的已存在的文件名或者不存在(则作为新建文件)的文件名。 打开Xfce终端,输入以下命令

vim test.txt

直接使用vim也可以打开vim编辑器,但是不会打开任何文件。

$ vim

进入命令行模式后输入:e文件路径 同样可以打开相应文件。

View模式

v 进入后,能够选择选中区域
V 进入后,能够选择选中行
这样能够片操作!

游标移动

在命令模式下,在该模式下使用方向键或者h,j,k,l键可以移动游标。

按键说明
h
l右(小写L)
j
k
w移动到下一个单词开头
b移动到上一个单词开头
进入插入模式
按键说明
i在当前光标处进行编辑
I在行首插入
A在行末插入
a在光标后插入编辑
w移动到下一个单词开头
o在当前行后插入一个新行
O在当前行前插入一个新行
cw替换从光标所在位置后到一个单词结尾的字符
命令行模式下退出vim
按键说明
:q!强制退出,不保存
:q退出
:wq!强制保存并退出
:w <文件路径>另存为
:saveas 文件路径另存为
:x保存并退出
:wq保存并退出
普通模式下删除vim文本信息

进入普通模式,使用下列命令可以进行文本快速删除:

命令说明
x删除游标所在的字符
X删除游标所在前一个字符
Delete同x
dd删除整行
dw删除一个单词(不适用中文)
d$或D删除至行尾
d^删除至行首
dG删除到文档结尾处
d1G删至文档首部

除此之外,你还可以在命令之前加上数字,表示一次删除多行,如:

2dd表示一次删除2行

重复执行上次命令
在普通模式下`.`(小数点)表示重复上一次的命令操作

拷贝测试文件到本地目录

$ cd /home/shiyanlou
$ cp /etc/protocols .

打开文件进行编辑

$ vim protocols

普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作

执行指定次数相同的命令

进入普通模式输入N<command>,N 表示重复后面的次数,下面来练习:

打开文件文件进行编辑

$ vim protocols

下面你可以依次进行如下操作练习:

输入10x,删除10个连续字符
输入3dd,将会删除3行文本
在普通模式下,你还可以使用dw或者daw(delete a word)删除一个单词,所以你可以很容易的联想到dnw(n替换为相应数字) 表示删除n个单词

游标的快速跳转

普通模式下,下列命令可以让光标快速调转到指定位置,我们分别讨论快速实现行间跳转和行内跳转

翻页
Ctrl + f 向前滚动一页
Ctrl + b 向后滚动一页

Ctrl + u 向前滚动半页
Ctrl + d 向后滚动半页

行间跳转

命令说明
nG(n Shift+g)游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg游标移动到到第一行
G(Shift+g)到最后一行

还是来练习一下吧:

使用vim打开练习文档

$ vim protocols

依次进行如下操作练习:

快速跳转到第9行,然后将其该行删除
回到第一行,向下删除8行
跳转到文档末,然后删除该行

小技巧:你在完成依次跳转后,可以使用 Ctrl+o快速回到上一次(跳转前)光标所在位置,这个技巧很实用,比如当你在写代码时,忽然想起有个 bug,需要修改,这时候你跳过去改好了,只需要按下Ctrl+o就可以回到你之前的位置。vim 中会用很多类似的小技巧就等着你去发掘。

行内跳转
普通模式下使用下列命令在行内按照单词为单位进行跳转

命令说明
w到下一个单词的开头
e到当前单词的结尾
b到前一个单词的开头
ge到前一个单词的结尾
0或^到行头
$到行尾
f<字母>向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
F<字母>向前搜索<字母>并跳转到第一个匹配的位置
t<字母>向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)
T<字母>向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)

依次进行如下操作练习:

在普通模式下,任意跳转到一行,使用w 跳转到一个单词的开头,然后使用dw 删除这个单词
在普通模式下,使用 e跳转到一个单词的结尾,并使用~ 将游标所在字母变成大写或小写

复制及粘贴文本

普通模式中使用y复制

普通模式中,yy复制游标所在的整行(3yy表示复制3行)
普通模式中,y^复制至行首,或y0。不含光标所在处字符。
普通模式中,y$ 复制至行尾。含光标所在处字符。
普通模式中,yw 复制一个单词。
普通模式中,y2w 复制两个单词。
普通模式中,yG复制至文本末。
普通模式中,y1G 复制至文本开头。
普通模式中使用 p 粘贴

普通模式中,p(小写)代表粘贴至光标后(下)
普通模式中,P(大写)代表粘贴至光标前(上)
打开文件进入普通模式练习上述命令,这会儿你就可以随意 yy 了。

$ vim protocols
剪切及粘贴

其实前面讲得 dd 删除命令就是剪切,你每次 dd删除文档内容后,便可以使用 p 来粘贴,也这一点可以让我们实现一个很爽快的功能——交换上下行:

ddp,就这么简单,即实现了快速交换光标所在行与它下面的行

替换和撤销(Undo)命令

替换和Undo命令都是针对普通模式下的操作

命令说明
r+<待替换字母>将游标所在字母替换为指定字母
R连续替换,直到按下Esc
cc替换整行,即删除游标所在行,并进入插入模式
cw替换一个单词,即删除一个单词,并进入插入模式
C(大写)替换游标以后至行末
~反转游标所在字母大小写
u{n}撤销一次或n次操作
U(大写)撤销当前行的所有修改
Ctrl+rredo,即撤销undo的操作
使用命令进行快速跳转缩进操作

缩进操作均在普通模式下有效

打开文件进行编辑

$ vim protocols

普通模式下输入15G,跳转到15行
普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽)
普通模式下输入<<整行向左回退
普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
shiftwidth命令
shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值

:set shiftwidth?

设置缩进为10个字符

:set shiftwidth=10

输入ESC回到普通模式,再次尝试>> 看缩进量是否变化

调整文本位置

命令行模式下输入:ce(center)命令使本行内容居中

:ce

命令行模式下输入:ri(right)命令使本行文本靠右

:ri

命令行模式下输入:le(left)命令使本行内容靠左

:le
快速查找

普通模式下输入 /然后键入需要查找的字符串 按回车后就会进行查找。 /功能相同,只不过 是向上而 /是向下查找。 进入查找之后,输入nN可以继续查找:n表示继续查找,N反向查找

快速查找练习
使用 vim 打开文件进行编辑

$ vim protocols

普通模式下输入/icmp然后回车即可查找字符串icmp
普通模式下输入n查找下一个icmp
普通模式下输入?tcp向上查找字符串tcp
普通模式下输入N查找上一个出现的tcp
命令行模式下输入noh 然后回车即可取消搜索
高级查找
普通模式下输入\*寻找游标所在处的单词
普通模式下输入\#同上,但\#是向前(上)找,\*则是向后(下)找
普通模式下输入g\*\* ,但部分符合该单词即可
普通模式下输入g\#\# ,但部分符合该单词即可
以上查找n,N 的继续查找命令依然可以用

快速替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)

作用范围

作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g

全文:

:%s/foo/bar/g

选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :’<,’>。

:'<,'>s/foo/bar/g

2-11行:

:5,12s/foo/bar/g

当前行.与接下来两行+2:

:.,+2s/foo/bar/g

附图:
在这里插入图片描述

个人学习记录

复制单词 yw,粘贴单词p
选中的当前单词 viw

vim和sh切换 :sh 命令 exit

折叠操作

zf:折叠选定的行
zo:打开折叠 (折叠段落Vzf折叠 zo展开)
zR:打开所有折叠
zM:关闭所有折叠
zd:删除折叠
我个人最最常用的折叠方法是先将光标移动到左括号或者右括号,然后使用zf%来折叠一段代码

分屏操作

左右分割 Ctrl+W v 上下分割 Ctrl+W s
关闭当前 Ctrl+W c 关闭当前窗口(可关闭最后一个) Ctrl+W q
光标移动到分屏 上Ctrl+W kCtrl+W jCtrl+W hCtrl+W l 下一个 Ctrl+W w

关闭当前屏: Ctrl+w,c
如何切换焦点?
Ctrl + w, w 后一个
Ctrl + w, p 前一个
Ctrl + w, h 四个方向
Ctrl + w, i
Ctrl + w, k
Ctrl + w, l
如何关闭其他窗口?
Ctrl + w, o
载入文件
:vs 文件路径/文件名 在新的垂直分屏中打开文件
:sv 文件路径/文件名 在新的水平分屏中打开文件

注释操作

连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释

  1. 举例,在1-10行添加#号注释:
:1,10s/^/#/g

表示在第 1~10 行行首加"#“注释。”^"意为行首;"g"表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将 “g” 改为 “c”。

取消连续行注释,则可以使用 “:起始行,终止行s/^#//g”,例如:

:1,10s/^#//g

意为将行首的"#“替换为空,即删除。
2) 举例,在1-10行添加//号注释:
添加”//"注释要稍微麻烦一些,命令格式为 “:起始行,终止行 s/^g”。例如:

:1,5s/^/\/\//g

表示在第 1~5 行行首加"//"注释,因为 “/” 前面需要加转义字符 “”,所以写出来比较奇特。

取消连续行注释,则可以使用 “:起始行,终止行s/^#//g”,例如:

:1,5s/^\/\///g

意为将行首的"#"替换为空,即删除。

标签页分组

参考
新建Vim标签页
Vim命令行模式下使用命令:tabedit文件名 或 tabe 文件名 可以在新标签页中打开指定的文件
切换标签页
Vim普通模式下使用命令gt或命令行命令:tabnext (缩写形式 :tabn) 可以移动到下一个标签页。
相反地,gT:tabprevious (缩写形式 :tabp) 可以移动到上一个标签页。
快速移动到第一个标签页,可以使用 :tabfirst:tabr命令,而命令 :tablast可用来快速移动到最后一个标签页。
显示所有标签页
Vim命令行命令:tabs可以列出所有的标签页和它们包含的窗口。
关闭标签页
Vim命令行命令 :tabclose(缩写形式为:tabc) 可以关闭当前标签页及其中的所有窗口,而命令 :tabonly(缩写形式为 :tabo) 将关闭所有其他标签页,只保留当前活动标签页。
移动标签页
Vim命令行命令:tabmove n (缩写形式为:tabm) 用于将当前标签页移到第 n 个标签页之后。

这篇关于Vim命令记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回