Vim学习笔记

玩转vim

初始Vim想说爱你不容易

  • 使用i( Insert)进入编辑模式,开始输入文字
  • i表示(insert),a( append),o( open a line below)
  • 使用Esc又可以回到 normal模式。使用 :wq保存退出
  • a append,当前字母后面插入
  • i insert,当前字母前面插入
  • o open a line below,当前行下面插入
  • A append after line,在一行前面插入
  • I insert before line,在一行后面插入
  • 0 append a line above,在一行上面插入
  • :w+回车,表示保存当前文件

Vim为什么有这么多模式

进入Ⅵim默认是 normall(普通)模式。使用Esc从插入回到普通模式
普通模式下可以进行各种命令操作和移动
大部分情况下你是在浏览而不是编辑,所以im默认是 normal

命令模式

Normal模式下输入:之后执行命令,比如保存退出:wq一气呵成
◆顾名思义,执行Vim命令,比如保存:w,退出:q
◆比如分屏:vs( vertical split)竖分屏,:sp( split)横分屏,用:q退出
◆比如使用:% s/foo/bar/g全局替换

:set nu 设置行号

:% s/java/python/g

:%表示全部文件

把java替换成python

g代表全局替换

Visual(可视)模式

Visual模式一般用来块状选择文本

◆ Norma模式下使用ν进入 visual选择
◆使用V选择一整行
◆使用ctr+v进行方块选择

选中以后可以按d进行删除或者y进行复制

Vim插入模式小技巧

如何快速纠错

◆进入Vim之后首先使用a/i/o之一进入插入模式
◆ctrl+h删除上一个字符,ctrl+w删除上一个单词,ctrl+u删除当前行

有用的快速移动命令

Ctrl+a快速移动到开头,Ctrl+e 快速移动到结尾,Ctrl+b往前移,Ctrl+e往后移(这个命令无法使用,不知道如何)

快速切换 iinsert和 normal模式

很多键盘的键位设置,Esc按起来不方便,不方便切换到 normal
◆使用ctrl+c代替EsC(但是可能会中断某些插件)或者ctrl+[
◆gi快速跳转到你最后一次编辑的地方并进入插入模式
◆在配置章节我们会讲解如何映射方便的快捷键来替代ESC

Vim快速移动大法

上k下j左h右l

在单词之间『飞舞』

在单词之间移动是我们浏览操作中最常使用的命令

◆w/W移到下一个 word/WORD开头。e/E下一个word/WORD尾

◆b/B回到上一个Word/WORD开头,可以理解为 backword

◆word指的是以非空白符分割的单词,WORD以空白符分割的单词

:syntax on打开语法高亮

行间搜索移动

同一行快速移动的方式其实是搜索一个字符并且移动到该字符

◆使用f{char}可以移动到char字符上,t移动到char的前一个字符

◆如果第一次没搜到,可以用分号(;)/逗号(,)继续搜该行下一个/上一个

◆大写的F表示反过来搜前面的字符

vim水平移动

如何快速移动到一行的行首或者行尾呢?
◆0移动到行首第一个字符,^移动到第一个非空白字符

◆$移动到行尾,g_移动到行尾非空白字符

◆记住常用的0和$就可以满足日常需求了

vim垂直移动

我们还可以在句子 sentence)和段落( paragraph)间移动(不常用)
◆使用括号()在句子间移动,你可以用hep(来查看帮助
◆使用{}在段落之间移动
◆插件章节我们会讲如何用 easy-motion插件移动,这些命令就都不
用记忆啦

vim页面移动

翻页命令太多,2/8定律,记住常见的就能满足需求
◆gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回

◆H/M/L跳转到屏幕的开头(Head),中间( Middle)和结尾( Lower)

◆ctrl+u.ctrl+f上下翻页。( upword/ forward).zz把屏幕置为中间

Vim快速增删改查

增前面已经讲过

vim快速删除

如何快速删除一个字符或者单词呢?
◆Vim在 normal模式下使用ⅹ快速删除一个字符
◆使用d( delete)配合文本对象快速删除一个单词daw( d around
word)
◆d和ⅹ都可以搭配数字来执行多次

dw删除字母

daw删除这个单词连带着单词后面的空格

diw只删除这个单词不连带着单词后面的空格

dd删除当前一行

dt)快速删除(sajkfhk)括号内的内容,光标定位在s上

d$,快速删除到行尾

d0,快速往前删除到行首

vim快速修改

相比删除,更常用修改,一般是删除之后改成我们期望的文本
◆常用有三个,r( replace),c( change),s( (substitute)
◆ normal模式下使用r可以替换—个字符。s替换并进入插入模式
◆使用c配合文本对象,我们可以快速进行修改

光标定位到那个字母,按ra,将那个字母替换成a

输入大写R以后,开始输入往后不停替换

输入大写S以后,整行删除开始,开始输入 如果输入错误就按U撤销

输入大写C可以删除整行进行操作

vim查询

查询单词也是一个常用操作
◆使用/或者?进行前向或者反向搜索
◆使用n/N跳转到下一个或者上一个匹配
◆使用*或者#进行当前单词的前向和后向匹配

:set hls 设置高亮搜索

:set incsearch 进行增亮搜索

Vim如何搜索替换

vim替换命令

substitute命令允许我们查找并且替换掉文本,并且支持正则式
◆:[range]s[ubstitute]/{pattern}/{string}/[flags]
◆ range表示范围比如:10,20表示10-20行,%表示全部
◆ pattern是要替换的模式, string是替换后文本

替换标志位

Flags有几个常用的标志
◆g( globa)表示全局范围内执行
◆c( confirm)表示确认,可以确认或者拒绝修改
◆n( number)报告匹配到的次数而不替换,可以用来查询匹配次数(这个n用来统计搜索范围内有多少个单词)

Vim多文件操作

Buffer window Tab

我们先来介绍几个多文件操作相关的概念
◆ Buffer是指打开的一个文件的内存缓冲区
◆窗口是 Buffer可视化的分割区域
◆Tab可以组织窗口为一个工作区

Buffer

Buffer-什么是缓冲区?
◆vim打开一个文件后会加载文件内容到缓冲区
◆之后的修改都是针对内存中的缓冲区,并不会直接保存到文件
◆直到我们执行W( write)的时候才会把修改内容写入到文件里

Buffer切换

如何在buffer之间切换呢?

◆使用:ls会列举当前缓冲区,然后使用:bn跳转到第n个缓冲区

◆: bpre: bnext: bfirst: blast

◆或者用:b buffer name加上tab补全来跳转

Window窗口


窗口是可视化的分割区域
一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同缓冲区
◆<Ctl+W>s水平分割,<Ctrl+W>v垂直分割。或者sp和Vs
◆每个窗口可以继续被无限分割(看你屏幕是否够大)


用gt就可在标签页切换

什么是Vim的text object

iw表示 inner word.如果键入viw命令,那么首先v将进入选择模式,然后iw将选中当前单词。
aw表示 a word,它不但会选中当前单词,还会包含当前单词之后的空格。
以下实例中的红色[]表示作用范围:
iw This is a [test] sentence.
aw This is a [test ]sentence.
iW This is a […test…]sentence
aW This is a [.test.]sentence
is sentence. [This is a sentence.] This…
as sentence. [This is a sentence. This…
End of previous paragraph
ip [This is a paragraph. It has two sentences.]
The next
End of previous paragraph.
ap [This is a paragraph. It has two sentences.

​ ]The next

Vim复制粘贴与寄存器的使用

Vim norma模式复制粘贴

初学者会感觉vim复制粘贴比较奇怪,先从 normal模式学习
◆ normal模式下复制粘贴分别使用y(yank)和p(put),剪贴d和p
◆我们可以使用 v(visual)命令选中所要复制的地方,然后使用p粘贴
◆配合文本对象:比如使用yw复制一个单词,yy复制一行

yy是复制一行,按p粘贴

Insert模式下的复制粘贴

很多人会使用鼠标进行选中,然后使用ctrv或者cmdv粘贴
◆这个和其他的文本编辑器差不多,但是粘贴代码有个坑
◆很多人在vmrc中设置了 autoindent,粘贴 Python代码缩进错乱
◆这个时候需要使用: set paste和 :set nopaste解决

深入寄存器( register)

vim不使用单一剪贴板进行剪贴、复制与粘贴,而是多组寄存器
◆通过"{ register}前缀可以指定寄存器,不指定默认用无名寄存器
◆比如使用"ayiw复制一个单词到寄存器a中,"bdd删除当前行到
寄存器b中

其他常见寄存器

出了有名寄存器a-z,Vim中还有一些其他常见寄存器
◆复制专用寄存器“0使用y复制文本同时会被拷到复制寄存器0
◆系统剪贴板“+可以在复制前加上“+复制到系统剪贴板
◆其他一些寄存器比如“%当前文件名,“上次插入的文本

如何将Vim中的内容与电脑交互

使用V选中,然后输入”+y复制到电脑剪贴板

在电脑中其他地方复制,然后再Vim中“+p进行粘贴

或者

:set clipboard= unnamed可以让你直接复制粘贴系统剪贴板内容

:e!重新加载一下

Vim如何实现宏完成批量操作

什么是vim宏 (macro)

◆宏可以看成是一系列命令的集合
◆我们可以使用宏『录制』一系列操作,然后用于『回放』
◆宏可以非常方便地把一系列命令用在多行文本上

如何使用宏

宏的使用分为录制和回放,是不是有种拍电影的感觉
◆vm使用q来录制,同时也是q结束录制
◆使用 deregister)选择要保存的寄存器,把录制的命令保存其中
◆使用@{ register}回放寄存器中保存的一系列命令

Vim补全代码


上下选择Ctrl+p与Ctrl+n是上下选择

给Vim换个配色

vim更换配色

很多现代化的编辑器和IDE都支持更换主题,Vim当然也可以
◆使用: colorscheme显示当前的主题配色,默认是 default
◆用 :colorscheme<ctrl+d>可以显示所有的配色

以上为https://imooc.com/video/19479课程的部分笔记,对Vim有兴趣的朋友可以去关注一下这个大佬

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值