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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

linux 判断某个命令是否安装

linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' >&2exit 1fi

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

centos 6安装 vim

centos 安装vim 1.首先查询当前当前vim所依赖的包存在不存在.检查缺少哪个几个依赖包 [root@bogon firstCopy]# rpm -qa|grep vivimvim-common-7.4.160-5.el7.x86_64vim-enhanced-7.4.160-5.el7.x86_64vim-filesystem-7.4.160-5.el7.x86_64vim-

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

Linux命令(4):fg与bg命令

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一.& 最经常被用到 这个用在一个命令的最后,可以把这个命令放到后台执行 二.ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停 三.jobs 查看当前有多少在后台运行的命令 四.fg 将后台中的命令调至前台继续运行 如果后台中有多个命令,可以