博主信息
Whitney的博客
博文
42
粉丝
3
评论
2
访问量
48992
积分:0
P豆:129

Vim 的使用

2020年11月19日 15:07:36阅读数:63博客 / Whitney的博客/ Linux

Vim

Vim具有6种基本模式和5中派生模式。这里只简单介绍下6种基本模式

1.普通模式(Normal mode)

在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。

例如普通模式命令dd删除当前行,但是第一个‘d’的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的‘j’键就可以删除当前行和下一行。

另外可以还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。

在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。

2.插入模式(Insert mode)

在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

在插入模式中,可以按ESC键回到普通模式。

3.可视模式(Visual mode)

这个模式于普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的‘文本对象’也能和移动命令一样用在这个模式中。

4.选择模式(Select mode)

这个模式和无模式编辑器的行为比较相似(Window标准文本空间的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。

5.命令行模式

在命令行模式中可以输入会被解释成并执行的文本。例如执行名令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

6.Ex模式(Ex mode)

这和命令行模式比较类似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。


实际操作

1.进入插入模式

i 在当前光标处进行

I在行首插入

A在行末插入

a在光标后插入编辑

o在当前行后插入一个新行

O在当前行前插入一个新行

cw替换从光标所在位置后到一个单词结尾的字符

(PS:注意每次要先回到普通模式才能切换成以不同的方式进入插入模式)

2.退出vim

2.1 命令行模式下退出vim

从普通模式输入:进入命令行模式,输入w回车,保存并退回编辑。

输入:w<filename>可以将文档另存为其他文件名或存到其他路径下。

以下为其他几种退出方式

(1):q! 强制退出,不保存

(2):q  退出

(3):wq! 强制保存并退出

(4):w<文件路径> 另存为

(5):saveas 文件路径 另存为

(6):x 保存并退出

(7):wq 保存并退出

普通模式下按下Shift+zz即可保存退出Vim


2.2 普通模式下删除vim文本信息

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

(1)x  删除游标所在的字符

(2)X 删除有效所在前一个字符

(3)Delete 同x

(4)dd 删除整行

(5)dw 删除一个单词(不适用于中文)

(6)d$或D 删除至行尾

(7)d^ 删除至行首

(8)dG 删除到文档结尾处

(9)d1G 删至文档首部


2.3 游标的快速跳转

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

2.3.1 行间跳转

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

gg 游标移动到第一行

g(Shift+g)到最后一行



2.3.2 行内跳转

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

(1)w 到下一个单词的开头

(2)e 到当前单词的结尾

(3)b 到前一个单词的开头

(4)ge 到前一个单词的结尾

(5)0或^ 到行头

(6)$ 到行尾

(7)f<字母> 向后搜索<字母>并跳转至第一个匹配的位置

(8)F<字母> 向前搜索<字母>并跳转至第一个匹配的位置

(9)t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)

(10) T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)



2.4 复制及粘贴文本

(1)普通模式中使用y复制

(2)yy  复制游标所在的整行(3yy表示复制3行)

(3)y^ 复制至行首,或y0。不含光标所在处字符。

(4)y$ 复制至行尾。含光标所在处字符。

(5)yw 复制一个单词

(6)y2w 复制两个单词

(7)yG 复制至文本末

(8)y1G复制至文本开头

(9)p粘贴

(10)p(小写)代表粘贴至光标后(下)

(11)P(大写)代表粘贴至光标前(上)


2.5 替换和撤销(Undo)命令

(1)r+<待替换字母> 将游标所在字母替换为指定字母

(2)R 连续替换,知道按下ESC

(3)cc 替换整行,即删除游标所在行,并进入插入模式

(4)cw 替换一个单词,即删除一个单词,并进入插入模式

(5)C(大写)替换游标以后至行末

(6)~反转游标所在字母大小写

(7)u{n} 撤销一次或n次操作

(8)U(大写) 撤销当前行的所有修改

(9)Ctrl+r redo,即撤销undo的操作


2.6 快速缩进

2.6.1 使用命令进行快速调整缩进操作

(1)15G 跳转到15行

(2)>>整行将向右缩进

(3)<< 整行向左回退

2.6.2 shiftiwidth命令

(1):set shiftwidth?  获取目前的设定值

(2):set shiftwidth=10 设置缩进为10个字符

2.6.3 调整文本位置

(1):ce 使本行内容居中

(2):ri 使本行文本靠右

(3):le 使本行内容靠左


2.7 快速查找

普通模式下输入/然后键入需要查找的字符串,按回车后就会进行查找。?与/功能相同,只不过?是向上而/是乡下查找。

进入查找之后,输入n和N可以继续查找。n是查找下一个内容,N查找上一个内容。


2.8 可视模式

在普通模式下输入v(小写),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v后就会取消选取。

在普通模式下输入shift+v(小写),进入行选择模式,按下v之后就会把整行选取,上下移动光标选更多的行,同样,再按一次shift+v就可以取消选取。

在可视模式下输入d删除选取区域内容

在可视模式下输入y复制选取区域内容




全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 我们知道,现在绝大部分编辑器都支持插件扩展,通过插件来扩展编辑器功能。vim编辑器也支持插件,且它插件多不胜数,有非常酷炫且高大上插件。
    给大家一个建议,学习vim配置前,先把vim基本操作练习好。
    今天,和大家介绍下vim下强大工具——宏。使他,可以完成许多意想不到功能哦!从字面上很难理解宏意思,其实你就理解成批处理就行了,把宏看成许多命令集合。然后这些命令集合可以多次执行。
    今天给大家介绍两款非常使vim插件,在页面内快速移动以及成对编辑。
    映射是我最喜欢vim功能了,通过它可以自由设置自己快捷键,可以大大提高我编写效率。映射可以理解为设置快捷键,就是让你少量,便于按键来替代比较多、繁键。
    vim退出不保存命令是:“:q”。vim中还有其他命令,例:不保存文件,强制退出命令是“:q! ”;保存文件,退出命令是“:wq”;强制保存文件,退出命令是“:wq!”。
    之前写过一篇文章说明如何使vim-plug去安装vim插件,可能有些同学就会有疑问了,那么我要怎么去寻找自己想要插件呢?
    下面由sublime​教程栏目给大家介绍使sublime 3阅读android source,希望对需要朋友有所帮助!
    vim中退出不保存命令是【:q! 】表示强制退出,不保存,【:w】是保存但不退出,【:wq】是保存并退出,【.q】是退出。
    vim保存退出命令是wq。具体方法:首先按i键进入插入模式;然后编辑文件;接着按esc键进入命令行模式;最后输入【:wq】即可保存文件并退出。
    【object.entries()】转换一个object为array,但是,如果你想做相反事,不再想了! 使【Object.fromEntries()】来把array转换为object。
    Redis是一个开源使ANSI C语言编写、支持网络、可基于内存亦可持久化日志型、Key-Value数据库,并提供多种语言API。
    使Sublime Text 中宏方法:1、录制宏,使快捷键【Ctrl + Q】在Windows中录制宏;2、播放宏,在Windows上使快捷键【Ctrl + Shift + Q】;3、保存宏,使工具选择保存宏选项
    在vue中,使watch来响应数据变化。watch法大致有三种。下面代码是watch一种简单法:
    vue.mixin使方法:1、多个组件可以共享数据和方法,在使mixin组件中引入后,mixin中方法和属性也就并入到该组件中,可以直接使;2、钩子函数会两个都被调,mixin中钩子首先执行
    今天来了解RabbitMQ+haProxy+keepalived使,一起看看。
    不添加自定义验证器或者无需全局使验证器,在main.js中安装验证器,使 CommonJS 模块规范, 需要显式使 Vue.use() 安装验证器组件。
    本文介绍ES在MySQL、PHP中使,一起看看吧。
    cpu理论寿命很长,几十年或者都不是问题;而CPU实际使寿命一般是4~5年,超过其性能便无法满足户正常使需求(软件升级速度较快,造成硬件资源需求提升)。
    vue.prototype使方法:通过在原型上定义使其在每个Vue实例中可,代码为【Vue.prototype.$appName = 'My App'】,控制台会打印出My App。