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

相关文章

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用