鸟哥的Linux私房菜学习笔记——第九章vim编辑器

1.vi和vim简介

 vi是众多Linux众多文本编辑器的一种,学习vi的原因有以下几点:

  1. 所有的Unix-like系统都会内置vi文本编辑器,具有广泛的适用性,
  2. 很多软件的编辑接口会主动调用vi
  3. vim可以编写程序,可以主动的以字体和颜色来分辨语法
  4. 程序简单

vim是vi的高级版本,大多数Linux系统已用vim替代vi。

vim编辑器具有三种模式:一般命令模式(command mode)、编辑模式(insert mode)和命令行模式(command-line mode)。其中,一般命令模式为基础模式,文件打开默认为一般命令模式,并且,只有一般命令模式能与剩下两个模式相互转换,而剩下两个模式之间不能相互转换。下面简单介绍三种模式的常用命令:

2.常用命令

一般命令模式:
移动光标
[Ctrl] + [f]向下翻一页,相当于[Page Down]
[Ctrl] + [b]  向上翻一页,相当于[Page Up]
num+[space]num表示数字,space表示空格,光标向后移动num个字符
0或[home]移动到这一行最前面
$或[end]移动到这一行的最后
G        移动到文件的最后一行
num+G                移动到文件的第num行
gg移动到文件的第一行
num + [enter]         向下移动num行

查找与替换
/word光标之下查找word(只找一个)
?word光标之上查找word(只找一个)
n相同顺序继续查重,如/word之后+n是继续向光标之下方向查找
N同上,但是向相反方向
:n1,n2s/wprd1/word2/gn1和n2行之间,查找word1并替换为word2
:1,$s/word1/word2/g  同上,但是在第一行和最后一行之间查找
:1,$/word1/word2/gc同上,但在替换时增加询问
剪切、复制、粘贴、删除
x/Xx相当于[delete],X相当于[Backspace]
dd剪切光标所在那一行
yy 复制光标所在那一行
num+x/dd/yy以上操作均可以在操作之前加上num,表示操作num行
p/P p为向光标所在行之后粘贴,P为向光标所在行之前粘贴
u恢复上一个操作,类似[Ctrl] + z
[Ctrl] + r重做上一个操作
.小数点,重复上一个操作

编辑模式

在一般命令模式下,按下【i,I,o,O,a,A,r,R】中任意一个字母之后进入编辑模式,在编辑模式中,按下[ESC]退回。

进入编辑模式的不同方式

i 和 I

进入【插入模式】

i为从当前光标所在处插入,I为在当前行的第一个非空格字符处插入

a 和 A        

【插入模式】

a为从当前光标的下一个字符插入,A为从光标所在行的最后一个字符插入

o 和 O

【插入模式】

o为在在光标所在处的下一行插入新的行,O为在上一行插入新一行

r 和 R        

【替代模式】

r只会替代一次,R会一直替代到摁下esc为止

命令行模式

在一般命令模式下,摁下":"进入命令行模式,esc返回

保存、退出等
:w 保存
:q退出vim
:wq保存后退出

ZZ

保存后退出
:w [filename]另存为
:set nu显示行号
:set nonu取消行号

3.vim的缓存、恢复与打开时的警告信息

vim具有恢复功能,当vim被意外关闭时,可以通过特别的机制将未保存的数据救回来。

vim才用缓存的机制,当我们在使用vim对文件进行编辑时,vim会在当前目录下建立一个.filename.swp的文件。如果正常结束编辑,那么该文件会被自动删除;而如果vim被意外终止,那么该文件就会被保留下来,当你再次对【filename】文件进行编辑时,由于.swp文件的存在,vim会对你发出警告。

vim警告

在警告中,vim主动为你分析缓存未被主动删除的原因

(1)可能有其他人或程序同时在编辑这个文件。

        解决方法是让他们终止编辑或者以只读方式打开

(2)vim被不正确终止

  • 如果你需要这个缓存文件的内容,那么摁下【R】,采用缓存文件覆盖当前文件。需要注意的是,之后缓存文件在此情况下不会自动删除,你需要手动删除.swp文件。
  • 如果你不需要这个缓存文件,那么摁下【D】直接删除就可以进入原来的文件。
  • 摁下【E】则是在不删除缓存文件的情况下打开原来的文件。

4.vim的其他功能

可视化区块(visual block)

不同于Windows只能按整行复制,Linux中的vim可以按矩形复制

Windows复制文本效果
vim可视化区块复制文本效果

 当摁下【Ctrl】+ v时,进入可视化区块复制,即可选中光标起始与终止位置为对角线的矩形,摁下 y 复制,摁下 d 删除,摁下 p 粘贴

 多文件编辑

vim的多个窗口通常是独立的,无法在file1复制之后在file2粘贴,所以可以采用多文件编辑模式:

通过【vim file1 file2】进入多文件编辑模式。此模式下,在file1复制的内容可直接在file2粘贴。

使用【:files】命令可以查看同时编辑的文件有哪些

采用【:n】命令切换下一个文件,【:N】切换上一个文件

多窗口模式

在某些情况下,需要同时查看多个窗口

在vim中,在命令行模式下,采用【:sp filename】可以在保留当前文件窗口的条件下打开另一个文件窗口

【[ctrl] + w + [↑]】切换上一个窗口,【[ctrl] + w + [↓]】切换下一个窗口,【[ctrl] + w + q】终止当前窗口 

关键字补全

vim的关键字补全键为【[ctrl] + x】+

  • [ctrl]+x -> [ctrl]+n : 采用当前文件的文本内容为基础进行补全。如图,当我在文件中已输入”include“和“int”时,我再输入in进行补全时,vim会提示我是否为“include”和“int”中的一个
  •  [ctrl]+x -> [ctrl]+f : 采用目录中的文件名进行补全。如图,当我输入ma时,vim用目录中的文件名提示
  • [ctrl]+x -> [ctrl]+o :根据文件的后缀名进行补全。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值