linux - vim编辑器

linux vim编辑器

第一版的Vi是由Bill Joy1976年完成的,单词来源于visual

vi实际上整合了一个强大的行编辑器-ex,所以我们在使用vi的时候可以使用行编辑命令

vim可以说是vi的高级版本,是由Bram Mookenaar开发的,相对于传统的vi来说,有了很大的改进

vimLinux中实际上是vi的符号链接(或者说是别名)

一:启动和退出

启动vi或者vim只要键入简单的命令就可以了

$ vi

在这里插入图片描述

通过提示可以键入:q退出[注意是命令的一部分]

:q

通过给命令加上叹号,我们可以告诉 vi 我们真要退出 vi[强制退出]。
:q!

如果你在 vi 中“迷失”了,试着按下 Esc 键两次来回到普通模式

二:创建文件和插入模式

可以使用==vi + 不存在的文件名==的方式创建一个新的文件

$ vi foo.txt

在这里插入图片描述

每行开头的波浪号()表示那一行没有文本

vi 启动后会直接进入命令模式。这种模式下,几乎每个按键都是一个命令

可以通过命令模式下输入i键[insert]切换到插入模式,此时左下角会显示当前处在 插入模式【--insert--

在这里插入图片描述

此时就可以正常的输入文本内容了。输入完成后,键入Esc键就可以返回到命令模式中

在这里插入图片描述

此时在命令模式中键入:wq就可以保存退出了

在这里插入图片描述

三:移动光标

按键移动操作
l or 向右移动一个字符
h or 向左移动一个字符
j or 向下移动一个字符
k or 向上移动一个字符
0移动到当前行的行首
^移动到当前行的第一个非空字符
$移动到当前行的末尾
w移动到下一个单词或标点符号的开头
W移动到下一个单词的开头,忽略标点符号
b移动到上一个单词或标点符号的开头
B移动到上一个单词的开头,忽略标点符号
page Down or ctrl-f向下翻一页
page Up or ctrl-b向上翻一页
[number]G移动到第number行。例如,1G移动到文件的第一行
G移动到文件末尾

四:基本编辑

1:撤销操作 -> u

如果我们按下u按键[undo],当在命令模式下,vi将会撤销你所做的最后一次修改

在这里插入图片描述

2:追加文本 -> a

如果我们想要在这个句子的末尾添加一些文本,我们会发现i命令不能完成任务,因为我们不能把光标移到行尾

vi提供了追加文本的命令,明智地命名为a[append]。

如果我们把光标移动到行尾,输入a, 光标就会越过行尾,同时vi会进入插入模式

3:打开一行 -> o | O

我们插入文本的另一种方式是打开[open]一行。这会在两行之间插入一个空白行,并且进入到插入模式

命令打开行
o当前行的下方打开一行
O当前行的上方打开一行
  • 如果把光标移到 Line 3 上,再按下小 o 按键
The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
 <- 注意这行是新加入的,在第三行之下打开了新的一行,并且进入插入模式
line 4
line 5
  • 如果把光标移到 Line 3 上,再按下大 O 按键
The quick brown fox jumped over the lazy dog. It was cool.
Line 2
<- 在光标之上打开新的一行
Line 3
Line 4
Line 5

4:删除文本 -> x | d

x 按键会删除光标位置的一个字符。可以在 x 命令之前带上一个数字,来指明要删除的字符个数。

d 按更通用一些。跟 x 命令一样,d 命令之前可以带上一个数字,来指定要执行的删除次数。

另外,d 命令之后总是带上一个移动命令,用来控制删除的范围

下面举几个例子:

命令删除的文本
x当前的字符
3x当前字符及其后的两个字符。
命令删除的文本
dd当前行
5dd当前行及随后的四行文本
dW从光标位置开始到下一个单词的开头
d$从光标位置开始到当前行的行尾
d0从光标位置开始到当前行的行首
d^从光标位置开始到文本行的第一个非空字符
dG从当前行到文件的末尾
d20G从当前行到文件的第20

真正的 vi 只是支持单层面的 undo 命令。vim 则支持多个层面的

5:剪切、复制和粘贴 -> dd & yy & p

d命令不仅删除文本,它还“剪切”文本。每次我们使用d命令,删除的部分被复制到一个粘贴缓冲区中(看作剪切板)。

过后我们执行小 p命令把剪切板中的文本粘贴到光标位置之后,或者是大P命令把文本粘贴到光标之前

在这里插入图片描述

6:连接行 -> J

用户不可能通过删除“行尾结束符”来连接当前行和它下面的一行。由于这个原因,大写的J用于链接行与行

假设现在里面有个文件foo.txt

在这里插入图片描述

想要将Line 2Line 3放到同一行,就可以在命令模式下,将光标放在Line 2所在行, 然后按下J【注意不是j,这个是移动光标用的】

在这里插入图片描述

五:查找

1:全文查找 -> /

移动光标到下一个出现的单词或短语上,使用 / 命令。这个命令和我们之前在 less 程序中学到的一样。

当你输入/命令后,一个/字符会出现在屏幕底部。

接下来,输入要查找的单词或短语,按下回车。光标就会移动到下一个包含所查找字符串的位置。

通过 n 命令【next】来重复先前的查找

在这里插入图片描述

2:查找并且替换 -> :[s/n]s/old/new/[g]

还是以这个文件为例:foo.txt

在这里插入图片描述

如果我们想要替换所有的Line -> line,可以在命令模式下输入:%s/Line/line/g

此条目的具体解释如下:

条目信息解释
:冒号字符运行一个 ex 命令
%指定要操作的行数。
%是一个快捷方式,表示从第一行到最后一行。
另外,操作范围也可以用 1,5 来代替(因为我们的文件只有 5 行文本),或者用 1,$ 来代替,意思是“从第一行到文件的最后一行。”
如果省略了文本行的范围,那么操作只对当前行生效
s指定操作。在这种情况下是,替换(查找与替代)s -> substitute
/Line/line查找类型与替代文本
g这是“全局”的意思->global
如果省略g,则只替换每个文本行中第一个匹配的字符串

在这里插入图片描述
在这里插入图片描述

是否替换

通过添加一个 c字符到这个命令的末尾,来完成这个替换命令

这个命令会把我们的文件恢复先前的模样,在执行每个替换命令之前,vi 会停下来,通过下面的信息,来要求我们确认这个替换

在这里插入图片描述

操作说明
y替换
n不替换,跳过这个匹配
a对这个及随后所有匹配的字符串执行替换操作
q退出 == Esc
l执行这次替换并退出。llast的简写。
Ctrl-E Ctrl-Y分别是向下滚动和向上滚动。用于查看建议替换的上下文

六:多文件编辑

1:文件之间的切换 -> :n & :N

下面以这两个文件进行测试

在这里插入图片描述

同时打开两个文件,其中前面的会展示出来:

$ vim foo.txt output.txt  #将会展示出来 foo.txt

展示之后,可以在命令模式下键入:n切换到output.txt。再输入将会提示无法切换了,说明只能向后切换next

在这里插入图片描述

此时可以键入N往前找

2:打开文件管理 -> :buffers

这些命令使多个文件更容易管理。我们可以查看正在编辑的文件列表,使用:buffers 命令。运行这个命令后,屏幕顶部就会显示出一个文件列表

在这里插入图片描述

要切换到另一个缓冲区(文件),输入:buffer + number, 紧跟着你想要编辑的缓冲器编号

:buffer 2   # 此时就可以切换到output.txt

3:打开另一个文件并编辑 -> :e file_name

当文件由::e 命令加载,你将无法用:n:N 命令来切换文件。这时要使用:buffer + number,来切换文件

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值