Vim (三) 普通模式

Vim (三) 普通模式普通模式是 Vim 最自然放松的模式 和其他的编辑器不同 其他的编辑器大部分都是处于插入模式

大家好,欢迎来到IT知识分享网。

普通模式是Vim 最自然放松的模式,和其他的编辑器不同,其他的编辑器大部分都是处于插入模式。

许多普通模式命令在执行的时候可以指定执行的次数,这样我们就可以将其执行许多次。



普通模式的命令的强大,很大程度上源于 {操作符 + 命令对象} 这样的操作方式。 (首先指定一个操作,然后在指定操作的对象!)



Pratical Vim 中讲的好,一个画家虽然直接在画布上画画的时间很多,但是他们做的最多的工作研究主题,调整光线,把颜料混合成新的色彩等等。

所以说画家在休息的时候不把画笔放在画布上。

和画家一样,程序员,也只会花一部分时间来编写代码,绝大部分的时间都是在思考,阅读,以及在代码中穿梭浏览。而且,当确实需要修改的时候,

谁说一定要进入插入模式? 我们可以在普通的模式下面,插入,移动,删除等。在普通模式下面,我们有很多工作可以做到

技巧8: 把撤销单元切成块。

—————————————————————————————————————————————————–

1. u 键可以触发撤销命令。

2. 在别的编辑器中 撤销可能指的是 撤销上一次最后输入的字符 ,或者单词(这样子很合理,因为同义词会输入很多的单词)。

3. 在 vim 中我们可以控制撤销修改的粒度。什么对应一次修改呢?

一次修改: 在普通模式,可视模式, 以及命令行模式中所处发的命令。

一次修改:在插入模式中输入或者删除的文本。 i{insert some text}<Esc> 是一次修改(而不是多次修改)

4. 从进入插入模式开始,到离开进入普通模式为止,期间进行的输入或者删除的任何内容都被当作一次修改。

因此只要我们控制好 <Esc>的使用,就可以使得撤销命令用于 单词,句子,或者段落

5. 多久应该离开一次插入模式呢? 当你进行思考的时候,就可以离开了。



6.  在插入模式中按下<Enter>(也称为<CR>)可以另起一行,但是<Esc>+o(小写0)也可以另起一行,并且可以控制撤销粒度。



7. 如果在插入模式中使用了 <up> <Left> <right><down>这些光标键,将会产生一个新的撤销块。 (虽然没有退出插入模式)

(所以删除字符,一般都是在普通模式中的)

技巧9: 构造可重复的修改

——————————————————————————————————————————————————–

在vim 中完成一件事情,总是有不止一种方式,但是哪种方式最好呢?

1, 按键次数最少

2.    命令可以重复。 (点范式的用法哦)



文本。  The end is nigh. 

方式一:

若现在光标在h上。需要删除整个单词 nigh。如何做?

命令:db, 删除从光标到单词开头的内容,但是却会元封不动的留下光标下的单词。

命令;x, 删除光标下的单词。



方式二:

命令: b , 将光标置于单词首部。

命令:  dw, 删除从光标到单词尾部的内容。 (当前光标下的字符也会删除,并且会删除空格,光标停留在下一个单词的首字母)



方式三:

命令:daw (delete a word) 删除当前光标下的字符,并且会删除单词后面或者前面的空格(哪怕有多个空格,不会同时删除单词后面和前面的空格)

因此 运行命令 daw之后,光标会留在 s上,因为空格也被删除了。



这三种方式按键次数都是一样的,但是 最后一种方式却是可重复的。 因为按照点范式的用法,下一次我们按.的时候,就可以删除 is 了。





技巧10   用次数做简单的算数运算

————————————————————————————————————————————————————–

普通命令可以在执行的时候指定次数: 次数前缀。

<C-a> <C-x> 可以对数字左加法和减法操作。

                      如果当前光标不再数字上,那么可以跳转到该数字上,并且做加法和减法操作



并且: vim 的默认数字表示是八进制的。





技巧11: 能够重复,就别用次数

————————————————————————————————————————————————————-

删除两个单词: 的方式

d2w: 其中 2w 表示动作的对象,『动作命令 +动作对象』

2dw:  2 表示命令前缀。 (将命令 dw 执行两次)

dw. :  使用点范式。



但是,如果接下来我想要删除一个单词的话,采用点范式可以更好的操作。

所以,只在必要的时候使用 次数。





技巧12: 操作符 + 动作对象 (双剑何壁,天下无敌)

————————————————————————————————————————————————————

d{motion} 命令可以删除一个字符:dl

             删除一个完整的单词: daw

删除一个段落: dap

命令作用的范围由动作对象决定。



同理: c{motion}, y{motion}



g~, gu和 gU  操作符要按键两次才可以调用:称 g 为前缀字符。



学习新的动作对象 和操作符就像是在学习 vim 的词汇一样,当我们的词汇量增加的时候,就可以表达更多的想法。



daw:  删除一个单词

gUaw: 将一个单词转化为大写形式

dap : 删除一个段落

gUap: 将一个段落转化为大写形式。



例外: 当一个命令被连续调用两次的时候,作用与当前行

dd: 删除当前行

gUU = gUgU

>> 缩进当前行

想法:c 命令 和  d 命令的区别:

c: 修改,删除之后进入插入模式,插入字符。

d: 删除 ,删除之后留在普通模式。



另外二者在删除一个单词的时候,对空格的处理是不同的。





我们可以扩展动作对象 和 操作符。

自定义的操作符 和已经存在的动作对象协同工作。

自定义的动作对象 和已经存在的操作符号协同工作。































































免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128547.html

(0)
上一篇 2025-08-30 20:20
下一篇 2025-08-30 20:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信