admin 管理员组

文章数量: 887021

vim可以说是学习linux的必备技能,文件的拷贝实在是太麻烦了,不如直接对原文件进行修改。

所以我这里就总结了一些基础操作,看完你肯定能够学会vim对文件进行基础的操作。

什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。虽然说是文本编辑器,但是连 vim 的官方网站 (http://www.vim) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

下面是一张键位图

建议

是不是看着眼花缭乱?那就对了,因为这是完整的键位,应该很少有人能够全部都用上,就像在windows下,用的最多的还是Ctrl+C/V操作(手动滑稽)。

所以一开始实在没有必要系统的进行学习,而是先学基础操作,后面在使用中可以不断的熟悉,然后为了提高效率,你就会慢慢的掌握一些快捷键的使用。

三种模式

vim 共分为三种模式,分别是

  • 命令模式(Command mode):默认模式,移动光标,剪切/粘贴文本(界面表现:左下角显示文件名或为空)
  • 输入模式(Insert mode):修改文本(界面表现:左下角显示—INSERT–)插入模式下,按ESC按键返回命令模式
  • 底线命令模式(Last line mode):保存、退出等(界面表现:左下角显示—VISUAL–)末行模式下连续按两次ESC按键返回末行模式

三者之间的关系

图片来自runoob

命令模式

用户刚刚启动 vim,便进入了命令模式。

比如输入vim test.txt,就会变成这样:

test.txt如果不存在当前的目录,就会新建的一个test.txt文件.

此状态下敲击键盘动作会被vim识别为命令,而非输入字符。就像在windows下按住了ctrl一样,你的操作会被解析执行.

按下i,并不会输入一个字符,i被当作了一个命令,会进入输入模式

以下是常用的几个命令:

i 切换到输入模式,以输入字符。
: 切换到底线命令模式,然后可以在最底行输入命令。

输入/编辑 模式

在命令模式下按下 i 就进入了输入模式。

不是只有i才可以进入输入模式。后面会有其他命令进行文本编辑。

输入模式可以对文本进行内容进行修改。

在输入模式中,可以使用以下按键:

 - 字符按键以及Shift组合,输入字符 
 - ENTER,回车键,换行 
 - BACK SPACE,退格键,删除光标前一个字符
 - DEL,删除键,删除光标后一个字符 方向键,在文本中移动
 - HOME/END,移动光标到行首/行尾 
 - Page Up/Page Down,上/下翻页 
 - Insert,切换光标为输入/替换模式,光标将变成竖线/下划线 
 - ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

按下后左下角就会显示一个

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

底线命令模式下输入q!就会强制退出vim编辑器,不保存任何内容。

按ESC键可随时退出底线命令模式,回到命令模式。如果有输入内容没有执行两次esc也可退出。

这边就只介绍那么多,只是一些入门概念和操作。

下面就仔细讲解一下具体的操作。

下面是具体的文件操作

行号设置

命令模式下操作,只对当前文件有效。

命令解释
:set nu显示行号
:set nonu取消显示行号

如果需要全局设置vim /etc/vimrc,在最后一行处增加set number,保存就可以了。

文件操作

下面是文件的操作,都是底线模式的命令。(带 是为了说明这是底线模式命令)

命令解释
vim filename打开filename文件,如果不存在就创建
:w保存文件
:w!强制保存
:w filename另外保存至filename文件
:q退出vim编辑器,且保存文件;如果文件已修改请使用下面的保存命令
:q!强制退出vim编辑器,且 不保存
:wq保存文件退出 vim编辑器
:wq!保存文件强制退出 vim编辑器
:e!放弃所有修改,回到上次保存的状态或者打开时的状态,重新编辑
:e otherfilename切换编辑文件名为otherfilename的文件。
:set fileformat = unix文件格式修改为unix格式,如win下面的文本文件在linux下会出现^M。
:set fileencoding = utf-8转换文件编码,比如将一个文件转换成utf-8格式

所谓fileformat就讲的是个行结束符的问题。行结束符在显示的时候是不显示的。由于历史原因,dos,unix,mac采用了不同的行结束符。

光标移动

移动光标在命令模式和输入模式下都可以进行,但是输入模式下比较局限,因为大部分的按键都会被解析成字符进行输入,而命令模式则会解析成命令。

输入模式的光标移动

两个模式都可以使用方向键以及小键盘的方向键(需要解开num lock)进行光标移动。

输入模式下应该也只能方向键移动了。(别的我母鸡啊,如果有别的麻烦提醒我下一吧…)

命令模式的光标移动

命令解释
上下左右方向键移动光标
h j k l与方向键一样的移动方式,h 向左、j 向下 、k 向上、l 向右。
Space空格键移动
Backspace 退格键移动
Enter移动到下一行首
-移动到上一行首
n ↓或n ↑依次敲击 数字键 键 来实现移动n位,这里的n是数字。比如n↓,就是向下移动n行。n↑是向上移动n行
n →或n ←n→就是向右移动n位,n ←就是向左移动n位
n+n行
n-n行
G跳至文件的底部(注意是大写的G不是g
nG跳到行号为n的行
pageup一页
pagedown一页

复制和粘贴

命令解释
yy当前行复制到缓存区,也可以用"ayy复制,"a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy当前行向下n行复制到缓冲区,也可以用"anyy复制,"a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw复制从光标开始到词尾的字符。
nyw复制从光标开始的n个字符
y^复制从光标到行首的内容。
y$复制从光标到行尾的内容。
p粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴。
P粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴。

插入、撤销、删除

命令解释
a当前光标位置的右边添加文本
i当前光标位置的左边添加文本
A当前行末尾位置添加文本
I当前行开始处添加文本(非空字符的行首)
O当前行上面新建一行
o当前行下面新建一行
R替换(覆盖) 当前光标位置及后的若干文本
J合并光标所在行及下一行为一行(依然在命令模式)
x删除当前字符
nx删除从光标开始的n个字符
dd删除当前行
ndd向下删除当前行在内的n行
u撤销上一步操作
U撤销对当前行所有操作

替换

命令解释
: s/old/new用new替换行中首次出现的old
: s /old/new/g用new替换行中所有的old
: n,m s/old/new/g用new替换从n到m行里所有的old
: %s/old/new/g用new替换当前文件里所有的old

搜索

搜索之后的结果会高亮显示,如果想要取消高亮需要取消高亮命令。

命令解释
:/string向光标搜索string字符串
:?string向光标搜索string字符串
:n下一个搜索结果
:N上一个搜素结果
:noh(底线命令)取消高亮

小结

看到这里,再回头去看前面这张键位表,我感觉已经能够完全看懂这些命令了。

其他还有很多很多的命令,我也没有完全的了解,所以这篇文章就先介绍到这里了,感谢大家的观看。

本文标签: 编辑器 操作 简单 就这么 Linux