Vim语法及插件

news/2024/10/18 5:50:53/

Vim语法及插件

    • `Normal`模式
      • 移动
      • 删除
      • 修改
      • 查找
      • 复制粘贴
    • `Insert`模式
      • 复制粘贴
    • `CMD`模式
      • 替换
    • `Visual`模式
      • 复制
    • 多文件间的转换
      • Buffer
      • Window
      • Tab
    • 文本对象


Vim中的指令可以灵活组合使用

:help 查找文档

切换为后台Ctrl + z;切换为前台fg


Normal模式

进入Vim,默认Normal模式或使用Esc进入Normal模式

移动

单词间移动
移动到下一个word/WORD开头 w / W (移动到下一个word/WORD结尾 e / E
移动到上一个word/WORD开头 b / B
word是指以非空白符分割的单词,WORD是指以空白符分割的单词。

行间搜索移动
使用 f${char}可以移动到${char}字符上,t${char}移动到${char}字符的前一位字符
多个${char}间的切换用; / , 表示下一个 / 上一个
f搜索到光标行尾间的字符,F搜索到光标行首间的字符。

行间快速移动
0移动到行首第一个字符,使用0w起到和^相同的作用(^移动到行首第一个非空白字符)
$移动到行尾(g_移动到行尾非空白字符)

页面移动
gg / G 移动到文件的开头 / 结尾,ctrl + o快速返回
移动到屏幕的开头H (head),中间M (middle),结尾L (lower)
Ctrl + u / Ctrl + f 上(upword) / 下(forward)翻页
zz 调整当前行到屏幕中间

删除

xd 删除选中部分
dw删除光标所在词,dd删除光标所在行,D 删除所在行光标之后的所有词;
dt${char}删除光标到${char}的所有字符
d0 删除到行首,d$ 删除到行尾
2dd删除行,4x删除个字符。数字+命令 表示多次重复。

修改

r (replace) 替换一个字符,保持Normal模式; R 替换多个字符,保持Normal模式
s (subtitute) 删除当前字符,并进入Insert模式;S删除当前行,并进入Insert模式
c (change)
cw删除单词,并进入Insert模式;Cw删除光标到行尾,并进入Insert模式;

查找

/ / ? 进行前向 / 反向搜索
使用n / N 跳转到一个 / 一个
使用* / # 进行单词的前向 / 后向匹配

复制粘贴

y (yank)复制 yiw复制一个单词,yy复制一行
d (delete)剪切
p (put)粘贴

vim在复制、剪切过程中的文本内容是存在寄存器中,而不是系统剪切板。
xp :用x删除一个字符,将字符放到无名寄存器中,再使用p粘贴,实现字符对调。

对于寄存器的使用,通过:{register}可以指定寄存器,有多个寄存器,如az都可以设置为寄存器,可以作为剪贴板来使用。如"ayiw表示复制一个单词到寄存器a中,"bdd表示删除当前行到寄存器b中。
使用:reg a显示寄存器a中保存的内容
使用"bp表示粘贴寄存器b中的内容
""表示无名寄存器,默认就是用的无名寄存器,因此可以省略不写
"0表示复制专用寄存器,默认复制到无名寄存器时,也会复制到专用寄存器
"+表示系统剪贴板,用于和vim外进行交互用的寄存器

当在客户端进行复制后,在服务端进行粘贴时,无法使用寄存器进行交互,因此可以使用:set clipboard=unnamed设置服务器中的vim,再直接使用p来进行粘贴


Insert模式

i(insert)光标之插入,I插入
a(append)光标之插入,A插入
o(open a line below) 在下一行插入O在上一行插入

进入该模式后,ctrl + h 删除上一个字符,ctrl + w 删除上一个单词,ctrl + u 删除光标前当前行所有字符(同理于终端

可以使用 ctrl + cctrl + [,从 Insert 模式切换到 Normal 模式
可以使用 gi,从 Normal 模式切换到 Insert 模式中最后编辑的位置

复制粘贴

正常文本的复制粘贴ctrl+c ctrl+v
<ctrl+r>{register}对对应寄存器中的内容进行粘贴


CMD模式

:w (write)写入
:wq (write quit)写入并退出
:vs (vertical split)竖直分屏
:sp (split)水平分屏
:set nu (set number)设置行号

替换

支持正则表达式
语法::[range]s[ubtitute]/{pattern}/{string}/[flags]

[range]表示范围,如10,20表示10到20行,%表示全部

{pattern}表示需要替换的文本

{string}表示替换后的文本

[flags]
g (global) 表示全局范围执行
c (confirm) 表示需要确认是否修改
n (number) 表示匹配到的次数,而不进行替换

:% s/a/b/g 把所有的a替换成b
:1,6 s/a/b/g 把1到6行的a替换成b
:1,6 s/a//n 1到6行中查找有多少个a。但可能会对a替换成空字符,可修改为:1,6 s/a/&/gn

使用正则表达式
:% s/\<a\>/b/g 把所有的单词a替换成b,而不替换含有a字符的单词


Visual模式

进行可视化选择
Normal模式输入v,进入visual选择。使用V选择整行,使用Ctrl + v进行块状选择。

复制

y(yank) 复制选中部分于缓冲区中

yy复制整行(无需进入可视模式),y^复制当前位置到行首,y$复制当前位置到行尾,yw复制一个word,yG复制到文档末尾。

剪切:
d(delete)用法与复制类似。

粘贴:
p粘贴到光标之后,P粘贴到光标之前。整行复制,粘贴整行;非整行复制,粘贴光标的前后。

撤销:
u撤销操作,U撤销某一行最近所有修改,Ctrl+R重做。


多文件间的转换

Buffer

Buffer指打开的一个文件的内存缓冲区
修改时针对Buffer的内容修改,:w再将修改内容写入文件。
每个文件对应一个Buffer,使用:ls会列举当前缓冲区,再使用:b n跳转到第n个缓冲区。
:bpre :bnext :bfirst :blast 分别跳到对应的缓冲区中,或者用:b buffer_name 加上Tab补全来跳转。

通过:ls来获得缓冲区中对应文件的信息、编号,可以通过:b1跳到编号为1所对应文件的Buffer中去。
也可以用:e buffer_name打开对应的文件。

Window

WindowBuffer可视化的分割区域。
<Ctrl + w>v 垂直分割,同:vs
<Ctrl + w>s 水平分割,同:sp
<Ctrl + w>w 窗口间循环切换
<Ctrl + w>h 切换到左侧窗口,<Ctrl + w>H 将窗口移动左侧
<Ctrl + w>j 切换到下侧窗口,<Ctrl + w>J 将窗口移动下侧
<Ctrl + w>k 切换到上侧窗口,<Ctrl + w>K 将窗口移动上侧
<Ctrl + w>l 切换到右侧窗口,<Ctrl + w>L 将窗口移动右侧

Tab

Tab可以把Window组织为一个工作区


文本对象

可以快速操作一个单词、一个句子和一个段落等。
语法:[number]<command>[text object]

[number]表示次数
<command>表示命令,如d c y
[text object]表示要操作的文本对象,如w 单词,s句子,p段落


iw (inner word) viw表示选择当前单词,vi"表示选择"中的内容
aw (around word) vaw表示选择当前单词以及单词后的空格



http://www.ppmy.cn/news/829127.html

相关文章

GG 。B的搜索技巧?

作者&#xff1a;谢小帅 链接&#xff1a;https://www.zhihu.com/question/27258809/answer/101510143 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 一&#xff0c;搜索知乎上的相关话题&#xff1a; 1&#xff09;…

面试文章 转发

阿里 阿里巴巴实习生招聘 不完全指南 春天&#xff0c;又到了内推的季节&#xff0c;大厂们纷纷伸出橄榄枝&#xff0c;招揽着2020届毕业的新一批实习生。 1、内推还是不内推&#xff0c;有何区别&#xff1f; 内推是直接把简历给指定部门甚至具体到小组&#xff0c;而不内推则…

如何反黑客后门程序

前言   那什么&#xff0c;额不是最近国庆吗&#xff1f;因为疫情的缘故&#xff0c;我们都在家中&#xff0c;但发生了这么一件事&#xff0c;看到标题你应该知道是什么了&#xff0c;我被黑了&#xff01;&#xff01;&#xff01;咳咳咳&#xff0c;不能说是被黑了&#x…

音乐消除国界、下载废除权限:歌曲地址解析器 yosong

地址 https://github.com/yangyangwithgnu/yosong 版本 [v0.1.0,新增,2015-05-10]:发布初始版本。 演示 (音频属性中提取真实文件名) 背景 那么,现在情况是这个样子的,我又想下歌了。在很久很久以前,百度音乐上的歌曲存有 128kbps、192kbps、320kbps 三种品质的,当…

基于Ubuntu18.04下深度学习服务器搭建

基于Ubuntu18.04下深度学习服务器搭建 目录&#xff1a; 基于Ubuntu18.04下深度学习服务器搭建 主要模块组成Anaconda安装CUDA安装pytorch安装CuDNN安装其他常用指令 查看系统发行信息查看系统位数为用户分配sudo权限安装Apache服务器并启用防火墙控制新建用户查看、安装、卸…

2018杭州云栖大会 - 容器区块链分享预告

Clouder lab容器专场&#xff0d;Kubernetes on 容器服务-助力企业提升生产力 [ 会议时间&#xff1a;2018.09.20 AM会议地点&#xff1a;E2-5 ] 阿里云作为CNCF的白金会员&#xff0c;阿里云容器服务也是全球首批通过Kubernetes一致性认证的平台&#xff0c;支撑了国内外数千家…

[分享]实用的软件

分享是一种感恩,分享是一种美德 下面我将会贴上这些软件的官方的地址&#xff0c;不过某些软件没有官方的&#xff0c; 我会发上我上传的链接给你们下载&#xff0c;其实对于某些软件&#xff0c; 建议最好还是直接百度搜。。。 1. 迅雷白金会员获取器下载地址&#xff1a;http…

详解智能设备的6大迅雷长途下载办法

跟着科技进步和经济生活的提高&#xff0c;咱们联网运用的智能设备现已越来越多。你有幻想过一个场景&#xff0c;即是当遇到一个好文件的时分&#xff0c;你只需求手指轻松一点&#xff0c;就能完结遥控散布在不一样当地的电脑、手机、平板电脑、智能电视、盒子、路由器等等智…