vim 删除一行_最后一个Vim教程

什么是最后一个教程呢?就是说看完这个教程,以后再也不需要诸如:Vim快速入门,3小时学会Vim等等之类的入门教程了。

为什么可以写出最后一个教程?因为Vim操作其实是一种语言系统,这个语言系统是针对文字编辑设计的。是系统就是有结构的,这个文章就是要告诉你的Vim的基本语言结构以及如果用这个语言表达文字编辑的各种场景。

掌握Vim,提高效率最主要的事情是掌握Vim的语言,并且在这个语言框架内描述问题。

最后我会用Vim语言说一些话,猜猜他们都是什么意思?不过让我们先来看看Vim语言的基本元素和规则。

0、Vim 语言

编辑文字主要涉及定位和操作,定位就是找到想要操作的位置,比如移动光标,翻页,搜索等等;操作就是实际的动作,比如删除、替换、复制、粘贴等等。

为了完成上述操作,Vim的语言中主要包含三种词汇:动词,名词和形容词。通常Vim语言中的词汇用一个字母就可以表示,换句话说,一个字母或者符号就是一个词。后面我们会发现,有时候名词可以做动词用(就像我们的自然语言)。需要注意的是,Vim中大写和小写通常代表了类似词意的不同应用形式。

其中有一些词汇会将我们带入不同的“模式”中,或者说切换“语境”。也就是说,在不同的语境中,同的词会有不一样的意义。

1、基本元素

动词,表达动作:

  • v:选择。(大写)选择一行
  • d:删除。(大写)删除一行
  • y:复制。(大写)复制一行
  • yy: 另一种复制一行
  • p:粘贴。(大写) 在光标前粘贴
  • c:改变。
  • r:替换
  • /:搜索
  • ~:改变大小写
  • t:到,搜索并把光标停在目标前。(大写)向前搜索
  • f:到,搜索并把光标停在目标上 。(大写)向前搜索
  • hjkl:经典的移动光标的词汇,左、下、上、右
  • u:Undo
  • .: Redo
  • :切换到执行模式

名词,Vim中叫文字对象(Text Ovjects),他们是我们表达基本客体。

  • w:词,大写意味着忽略标点。动名词,光标移动一个词,大写则向前移动
  • s:句子。动名词,光标移动一个句子,大写则向前移动
  • p:段落。动名词,光标移动一个段落,大写则向前移动
  • (or ):句子, 当在某个语境 s 有其他意思的时候,用这个
  • {or} :也是段落的意思,当在某个语境 p 有其他意思的时候,用这个

需要注意的是这些名词都可以当作动词使用。

形容词,这些词用在动词或者名词前面:

  • i:里面
  • a:周围
  • 数字:表达数量

用Vim说句话

我们用上面的元素尝试组成几句话:

  • 删除2个词:d2w
  • 选择1个字母:v. 这并没有太多意义,因为你的光标所在的那个字母已经代表了选择
  • 改变词以及周边标点:caw。Vim会删除这个词,然后进入插入模式,你就可以输入新的内容了
  • 拷贝2个词:y2w
  • 改变从光标到下一个分号之间的内容:ct;
  • 改变""内部的内容:ci"。会删除"" 内部的内容,并且进入插入模式
  • 选择()内的内容:vi(
  • 选择2级()的内容:v2i(

一开始这些操作听起来很奇怪,但是一旦你习惯了这种表达方式,就会发现这是一种可以表达更加复杂编辑逻辑的方式。你基本上用几个字母就告诉了编辑器你想要做的事情。

2、模式(语境)

Vim与其他编辑器最大的不同在于它包含了多种模式,每种模式下,字符命令都有不同的意义,换句话说,在不同的语境下,基本词汇具有不同的意思。这在自然语言里非常常见。

Vim主要包含三个模式:命令模式、插入模式、选择模式和执行模式。下面这个图表达了如何在不同模式之间切换。执行模式没有话在图里,:可以进入执行模式。

56b8ec6a10830ebc54c10367fcd4b3fb.png
Image from Michael Jakl

命令模式下,绝大部分的名词、形容词如果单独使用,他们都会变成动词,多数是跟移动光标相关,少数与切换状态有关。当然,如果他们跟在动词后面,那么很自然他们还是名词。比如 w就是向前移动一个词,而d2w中,w还是名词,意为删除2个词。

形容词,在命令状态单独使用时:

  • i:切换插入状态,插入在光标前。
  • I:切换插入状态,插入在本行前
  • a:切换插入状态,插入在光标后
  • A: 切换插入状态,插入在本行后
  • o:切换插入状态,插入在下一行
  • O:切换插入状态,插入在上一行

名词,在命令状态单独使用时,都会变成移动光标的动词。类似hjkl

选择模式,是进行复杂选择和操作的模式。在这模式中,所有的动词均有效。需要注意的是按照句子移动和段落移动,只能使用{(而不能使用s和p,因为他们是替换和粘贴的意思。

  • v : 进入选择模式
  • V :进入选择模式,以行为单位
  • Ctrl+v :以列为单位选择

执行模式,就是通过:,让vim执行一些命令

  • :w 写入文件
  • :q 退出
  • :q! 强制退出
  • :wq 写入并退出
  • :saveas ~/path 另存为

ESC是一个特殊的键,他会从把编辑器从任意状态切换会默认的命令行状态。

3、一些问题

我列出一些命令,大家看看他们的功能是什么?

  • vwwy
  • Vjjd
  • vip
  • vipyjjp
  • 0i:j0vG.

参考

  • https://vim.rtorr.com/
  • https://danielmiessler.com/study/vim/
  • https://www.math.usm.edu/lambers/cos702/cos702_files/documentation/utilities_doc/vim_tutorial.html#fn1
  • https://medium.com/usevim/vim-101-quick-movement-c12889e759e0

Change Log

  • 2020-03-07 完成初稿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值