Linux基础知识篇三 -- vim的基本使用

我只担心一件事,我怕我配不上自己所受的苦难.
            ——陀斯妥耶夫斯基


一、什么是vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

二、vim的优缺点

2.1 可怕的 vim (缺点)

  • vim 学习门槛高
  • 操作奇怪
  • 不能用鼠标
  • 不配置不折腾的话,什么功能都没有,就是一个普通的编辑器
  • 不能管理项目
  • 没有代码高亮
  • 没有代码提示

    什么都没有
    如此来说, vim 没有任何优势…可是业内有一句话:
    世界上只有三种编辑器 vim, Emacs, 其他

2.2 vim的优点

vim是程序员得意助手,脱离鼠标,运指如飞,下面举几个简单的vim的优势的例子

高效率移动

在插入模式之外基本上来说,尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。 VIM 的强大之处在于他的命令模式!
使用 h、j、k、l
使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM就不用频繁的在箭头键和字母键之间移来移去了,这会节省很多时间。当命令模式时,可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。 [2]
在当前行里面有效的移动光标
很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。
在整个文件里面有效移动光标
VIM 有很多命令,可以用来到达文件里面你想到达的地方。

高效的输入

使用关键词自动完成
VIM 有一个非常漂亮的关键词自动完成系统。使用关键词自动完成功能,只需要输入开始几个字母(比如 iAmAL),然后按 (按住 Ctrl,再按 N)或者 。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。
聪明的进入插入模式
VIM 提供了很多进入插入模式的命令。
有效的移动大段的文本
使用可视选择(visual selections)和合适的选择模式。不像最初的 VI,VIM 允许你高亮(选择)一些文本,并且进行操作。
在可视选择模式下剪切和拷贝
粘贴
粘贴很简单,按 p。
使用多重剪贴板
很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因为大写的有些被 VIM 占用了。
避免重复
在 VI 里面,输入 . (小数点符号),将会重复输入的上一个命令。
使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字。

三、vim的基本使用

3.1 各模式的转换图

在这里插入图片描述

3.2 vim的三种工作模式

从2.1的图可以看出,vim编辑器共有三种工作模式,他们分别是命令模式,输入模式以及底行命令模式,下面依次介绍这几种模式。

3.2.1 命令模式

首先创建文件,当我们在linux命令行输入

vim hello.c

如果文件不存在,则会创建新的文件,如果存在,则编辑该文件,进入后会看到:
在这里插入图片描述

vim命令使用时有这几个选项:

  1. 普通的用vim打开一个文件file
vim file
  1. 打开文件file,直接定位到第n行
vim +n file
  1. 打开文件file,直接定位到最后一行
vim + file
  1. 打开文件file,直接定位到匹配pattern的第一个位置
vim +/pattern file
  1. 以只读方式打开file
vim -R file

当我们进入文件后,默认处于命令模式,输入模式按下Esc可进入命令模式在这个模式下,我们可以做很多有关文档编辑等事情(除了输入代码),例如:
我们可以复制一行或多行粘贴到指定位置,可以删除多行,也可以跳转到某一行,具体使用如下表:

光标的移动:

命令 效果
h 光标向左移动一个字符
j 光标向下移动一个字符
k 光标向上移动一个字符
l 光标向右移动一个字符
Ctrl + f 或 【PageDown】 向下翻一页
Ctrl + b 或 【PageUp】 向上翻一页
Ctrl + d 向下翻半页
Ctrl + u 向上翻半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格的上一行
n<space> n是数字,跟空格,光标向这一行后移n个字符的距离
0 或 【HOME】 移动到这一行最前面的字符处
$ 或 【END】 移动到这一行最后一个字符处
H 这个屏幕最上方那一行的字符处
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行
nG n为数字,移动到这个档案的第n行
gg 移动到这个档案的第一行
n n为数字,光标向下移动n行

文档操作

命令 效果
x,X 在一行字当中,x为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于[backspace]亦即是退格键)
nx n为数字,连续向后删除n个字符
dd 删除光标所在的那一整行
ndd n为数字,删除光标所在的向下n行
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除光标所在处,到该行的最后一个字符
d0 那个是数字的0,删除光标所在处,到该行的第一个字符
yy 复制光标所在的那一行
nyy n为数字,复制光标所在的向下n行
y1G 复制游标所在列到第一行的所有数据
yG 复制游标所在列到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p,P p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行
J 将光标所在列与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除10行,[10cj]
u 复原前一个动作,undo
ctrl+r 重做上一个动作,redo
. 这就是小数点!意思是重复前一个动作的意思
ZZ 若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开

3.2.2 底行命令模式

底行命令模式通常用来查找替换字符,或者保存文件退出编辑等,进入底行模式有这几种方法:
命令行模式输入 (就是输入冒号)
输入模式先Esc进入命令模式,在输入冒号()进入底行模式

查找与替换

命令 效果
/word 向光标之下寻找一个名称为word的字符串
?word 向光标之上寻找一个字符串名称为word的字符串
n 这个n是英文按键,代表【重复前一个搜寻的动作】
N 这个N是英文按键,与n刚好相反,为【反向】进行前一个搜寻动作。
: n1,n2s/word1/word2/g n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为word2
: 1,$s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2
: 1,$s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 ,且在取代前显示提示字符给用户确认(confirm)是否需要取代!

与行相关

命令 效果
:set nu 显示行号
:set nonu 隐藏行号
:num 跳转到第num行
:set paste 取消自动换行

底行模式的其他功能

命令 效果
: w 保存文件
: w! 强制写保存(若没有写权限仍然无法保存)
: q 退出vim编辑器
: q! 强制退出,但不保存刚刚的修改
: wq! 强制写保存退出
: w [filename] 将编辑的数据存储成另一个文件
: r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将[filename]这个文件内容加到光标所在行后面
: n1,n2 w [filename] 将n1到n2内容存储成filename这个文件
!command 暂时离开vi到指令列模式下执行command的显示结果!例如[:! ls /home]即可在vi当中察看/home 底下以ls输出的文件信息

一更加复杂的操作通常都由这些命令配合使用来完成。

3.2.3 输入模式

输入模式便是我们敲代码的环节了,进入输入模式有下面几种方法,根据情况选择:

在命令模式敲 效果
i,I 进入插入模式:i为【从目前光标所在处插入】,I为【在目前所在行的第一个非空格符处开始插入】
a,A 进入插入模式:a为【从目前光标所在的下一个字符处开始插入】,A为【从光标所在行的最后一个字符处开始插入】
o,O 进入插入模式:这是英文字母o的大小写,o为【在目前光标所在的下一行处插入新的一行】;O为【在目前光标所在处的上一行插入新的一行】
r,R 进入取代模式:r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止
ESC 退出编辑模式,回到一般模式中

直观来看:
在这里插入图片描述

后面我会更新一篇关于vim的高阶使用,因为vim拥有许多插件,这些插件的使用将vim抬到了一个新的高度,让工作效率大大提高!

猜你喜欢

转载自blog.csdn.net/weixin_45121946/article/details/106418164
今日推荐