第四节:粘贴命令、替换命令、替换模式和修改命令
第四节:粘贴命令、替换命令、替换模式和修改命令前方高能:今天会举很多个栗子!
粘贴命令
尽管上节课最后有写重大备注,但我知道肯定有些鱼油还是没看到,就只看到这个:
这里再次强调下:在 VIM 下使用删除命令,并不会直接将你的东西删掉,而是放到 VIM 的寄存器中。这样做有一个好处,就是可以让我们简单的实现类似于 Windows 的剪切功能。
使用 p 命令可以将最后一次删除的内容粘贴到光标之后。(大写的 P 则是粘贴到光标之前)
上边的栗子本来是:
Line One
Line Three
Line Two
Line Four
我只需将光标放在 Line Three 处,然后按下 dd 命令,再按 p 命令,即可将 Line Three 和 Line Two 的顺序调换过来。是不是很方便呢?
这里需要注意的是:如果你需要粘贴的是整行为单位,那么 p 命令将在光标的下一行开始粘贴;如果你拷贝的是非整行的局部字符串,那么 p 命令将在光标后开始粘贴。
拷贝命令
其实我们用的最多的还是拷贝粘贴,VIM 用 y 命令实现拷贝。语法跟删除的 d 命令一样:y motion
其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy 则表示拷贝 3 行;y$ 表示从光标所在的位置拷贝到行尾的所有字符;yG 则表示从光标所在行拷贝到文件末尾行的所有字符。
拷贝完成之后同样使用 p 命令进行粘贴,没什么好说的。
替换命令
VIM 还提供了一个简单的替换命令:r 命令。
r 用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符。注意,全程无需进入插入模式,也不会进入插入模式。
然后你可能猜到了,数字 + r 可能会产生一些物理反应。先输入【数字】再输入 r,最后输入新字符,说明从当前光标的位置开始,替换【数字】个新字符。
再举个栗子:
第一行,先将光标移动到字符 A 处,按下 r 键,再按下 C;
第二行,先将光标移动到第一个字符 B 出,按下 3r 键,再按下 C。
替换模式
对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的 R 键,屏幕左下角出现 -- REPLACE -- 字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。注意:退格键(Backspace)在替换模式中被解释为如果左边内容被替换过,则恢复到原来的样子;如果没有被替换过,则简单的向左移动。修改完毕后,按下 Esc 回到普通模式。
哎,怕你不懂,还是举个栗子做示范吧
修改命令
修改跟替换是不一样的!
修改跟替换是不一样的!
修改跟替换是不一样的!
重要的事情要说三遍……
修改会进入插入模式,替换不会进入插入模式!
修改会进入插入模式,替换不会进入插入模式!
修改会进入插入模式,替换不会进入插入模式!
修改命令我们使用 c 键来启动,格式是:c motion
没错,motion 依然表示范围,[数字]依然拥有奥义,同样是可选的,加上数字表示重复执行多次 motion 范围……
比如 cw 是修改光标指定单词的内容(VIM 的做法就是删除当前光标位置到下个单词前的所有字符,并进入插入模式);而 c2w 便是修改当前光标指定的单词以及下一个单词共计两个单词的内容……
按键 含义
c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式
c^ 同上
c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式
cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式
ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式
cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式
ch 删除光标前边一个字符,并进入插入模式
cl 删除光标指定的字符,并进入插入模式
cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式
ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式
cc 删除光标所在行的字符,并进入插入模式
所以,事实上,修改 == 删除 + 进入插入模式
好吧,我发现我发现了一个惊人的事实!
嘿嘿,也不完全是这样的哦,因为两者在定位光标上是不完全一样的!但你完全可以认为它们是想通的,因为在实际操作上,并不会影响影响影响你的……
关于魔鬼训练小程序的众多问题,请移步:VIM魔鬼训练须知
学习了 学习了。。。VIM高大上啊 光看不练 一看就忘唉 感觉就是在丢鼠标的节奏……
估计玩久了linux回来,鼠标都不会用了吧…………{:10_245:} 替换命令举例子,第二行B和C写反了,感觉{:10_258:} baibaitjy 发表于 2017-8-1 22:00
替换命令举例子,第二行B和C写反了,感觉
展示GIF上面那一行 我发现了一个小问题。。就是替换中对于退格键的说法,通过测试,退格键只能一定程度上恢复内容,如果手动使光标后移,却发现之前替换的内容不对,这时使用退格键回去,就不能恢复了。。所以,我感觉不应该有,退格键的后半句说法,若没修改过,就只当是普通的左移,因为这么一说,就感觉退格键如果在这种没修改的内容存在的情况下,没修改之前的内容也因为没修改的这部分内容的存在,不能通过退格键被恢复。。。好像,,,有点绕了。。。 {:10_254:} 多练,多练,多练 小程序找不到啊
本节课附带练习小程序:<……即将推出……>{:10_277:} 1 Cardist 发表于 2020-7-5 11:00
本节课附带练习小程序:
2021年了,还是没有
{:10_285:} guhusf 发表于 2021-1-14 20:58
2021年了,还是没有
哈哈 说好的附带小练习呢 苦等小练习 {:10_250:} 跟。。{:5_92:} 难上加难
怎么才能记住{:5_100:}
页:
[1]
2