前言及第一章(vim使用技巧总结)

本文介绍了Vim编辑器的基本操作模式(普通、插入、可视、命令行)及其特点,包括主旋律式的命令结构、演奏和弦、占位符的使用以及特殊按键的功能。重点讲解了重复修改、查找和替换的技巧,提倡通过最少键操作实现高效编辑。
摘要由CSDN通过智能技术生成

前言及第一章

该专栏文章用于对Drew Neil(作者)的书籍《Vim使用技巧》的总结记录


在第一章开始前首先要了解vim编辑器的几个模式(后面会详细展开):

  • 普通模式
    vim刚进入时就是普通模式(这点和其他编辑器都不同),这意味着你此时无法对文本直接通过输入单词,文字等来进行编辑,不过可以使用换行(j等)、重复(.)、编辑(i、a)、行末编辑(A)等命令来进行操作
  • 插入模式
    在这个模式下就和其他编辑器中的操作类似,可以直接输入单词、文字等,在普通模式下输入i、a、A等就能进入编辑模式,而按<Esc>则退回普通模式。
  • 可视模式
    这个模式前面暂且用不到,等后面再具体展开
  • 命令行模式(Ex模式)
    在该模式下可以执行类似正向查找、退出编辑器等命令。在普通模式下按下:键即进入Ex模式。

当前具体处于什么模式在编辑器左下角会有显示。

1、写作体例说明

  • 主旋律

在钢琴演奏中主旋律一般由一个接一个的音符构成,而在vim编辑器中的普通模式下,也有由按次序输入一个或多个按键组成的命令,例如:

标记含义
x按一次x
dw依次按d、w
dap依次按d、a、p
  • 演奏和弦

指同时按下几个按键的命令例如:<C-p>标记意味着同时按下和p按键

标记含义
<C-n>同时按<Ctrl>和n
g<C-]>先按g,然后同时按<Ctrl>和]
<C-r>0先同时按<Ctrl>和r,然后按0
<C-w><C-=>先同时按<Ctrl>和w,然后同时按<Ctrl>和=
  • 占位符

有些命令后面必须跟某种特定类型的按键,这些特定类型的按键可以放在占位符中例如:

标记含义
f{char}先按f后面接任意字符
'{a-z}先按’,后面按任意小写字母
m{a-zA-Z}先按m,后面跟任意小写或大写字母
d{motion}先按d,后面跟任意动作命令
<C-r>{register}同时按<Ctrl>和r,后面跟一个寄存器地址
  • 特殊按键
标记含义
<Esc>退出按键
<CR>回车键,也写作<Enter>
<Ctrl>按控制键
<Tab>按制表键
<Shift>按切换键
<S-Tab>同时按<Shift>和
<Up>按上光标键
<Down>按下光标键
按空格键
  • 提示符
提示符含义
$在外部shell中执行命令行命令
用命令行模式执行一条Ex命令
/用命令行模式执行正向查找
用命令行模式执行反向查找
=用命令行模式对一个vim脚本表达式求值

任何时候看到Ex命令,比如:write,都默认输完命令按下回车键来执行,而其他的命令例如/pattern<CR>,都只在标出了回车键后才按回车,而不是输完就立即按回车键。

2、第一章 vim解决问题的方式

  • . 命令重复修改

在vim编辑器中的普通模式下使用. 命令(直接按. )可以重复上一次的修改。在这里首先要理解一个概念:什么是修改?
例如:

  • x命令会删除光标下的字符
    也就是说如果你在普通模式下使用了x命令删除了一个字符那么接着按.则会重复一次x命令

  • dd命令可以删除整行

  • >G命令可以增加从当前行到文档末尾处的缩进层级

  • !!!每次进入插入模式时也会形成一次修改,但是如果进入插入模式什么也没干那么.命令重复的还是进入前的修改,也就是说不会重置修改状态。

  • 在插入模式中移动光标会重置修改状态。

  • u 命令则是与. 命令相反的命令,可以撤销上次修改

  • j向下换行,k向上换行


  • a从光标进入编辑模式
  • $将光标移动到末尾
复合命令等效的长命令作用
Cc$删除光标到结尾的字符(包括光标字符)并进入插入模式
scl删除光标字符并进入插入模式
S^C删除整行并进入插入模式
I^i回到行首并进入插入模式
A$a回到行末尾并进入插入模式
o<ESC>a在下面开一条新行并进入插入模式
Oko在这行上面开一条新行并进入插入模式
  • f{char}命令可以让vim查找下一处指定字符出现的位置

  • ;命令重复上一次查找

    也就是说如果要重复查找同一个字符或字符串,可以先用f{char}后面直接按;即可

    例如这样一段文本:var foo = “method(”+argument+“,”+argument2+“)”;


    如果想要将其中的所有“+”号左右加上空格可以按下面的步骤:

‘’’

f+    #(注释不要输入进去)找到+号位置
s␣+␣  #删除加号后重新输入“空格”“+”“空格”(这里是为了后面可以直接用.命令重复,直接在“+”号两边加空格无法使用.重复,因为这需要不止一次修改(移动光标会重置修改状态))
;     #重复上一次查找,来到第二个“+”号的位置
.     #重复上一次修改,将“+”替换成"空格+空格"
;.
;.
  • 可重复操作及如何回退
目的操作重复回退
做出一个修改{edit}.u
在行内查找下一指定字符f{char}/t{char};,
在行内查找上一指定字符F{char}/T{char};,
在文档中查找下一处匹配项/patternnN
在文档中查找上一处匹配项?patternnN
执行替换😒/target/replacement&u
执行一系列修改qx{changes}q@xu
  • 注意一点:查找匹配项用n N 查找指定字符用 ; ,

  • *命令查找光标所处的单词,可以使光标跳到下一匹配项,并使所有出现这个词的地方都被高亮显示

  • cw命令删除光标位置到单词结尾间的字符并进入插入模式

  • 有下面这一段文本:

‘’’

...We're waiting for content before the site can go live...
...If you are content with this, let's go ahead with it...
...We'll launch as soon as we have the content...

要求:将一三段的content替换成copy。操作如下:

‘’’

{start} #移动光标到content的位置
\*      #匹配光标所在单词
cwcopy\<Esc>  #删除content并添加copy然后退出插入模式
n      #移到下一个content
.      #重复上一次修改(先删除光标到词尾字符然后添加copy)
  • .范式

  • 对于要多次的重复修改问题,要想办法用最少的键来完成修改,而理想模式则是:一键移动,另一键执行,也就是说通过一次按键就能把光标移到下一个目标上,再用一次按键执行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值