vim-logo

如果不会在linux下查看、修改文件(算例输入文件/配置文件/提交脚本),还要从windows下改完了上传,效率太低了!因此,让我们一起用10分钟来学习一下vim编辑器吧,能够大大提高工作效率。

1. 什么是vi/vim?

linux下我们经常需要编辑一些文本文件,比如提交任务的脚本文件,或者打开文件修改一些内容。

可是经常使用windows的用户第一次面对一个linuxterminal一脸懵,WHAT??,文件在哪?怎么打开?怎么编辑?啥都不知道。

linux-terminal

虽然,常用的linux也是带了一些图形化的文本编辑器的,比如LibreOffice,就类似一个记事本软件或者word软件。

图形文本软件

但对于超算平台的用户,最为常用的还是推荐vim文本编辑器。在命令行输入vim 即可打开如下的界面:

vim-interface

vi 编辑器是所有 UnixLinux 系统下标准的编辑器,它就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。它是我们使用Linux系统不能缺少的工具。


2. vim使用初级

比如,我们希望新建一个名为 hello.txt 的文件,里面记录一些内容,只需要:

vim hello.txt

此时,我们在当前目录下新建并打开了一个名为 hello.txt 的文件,里面是空的,什么都还没写呢。

此时,vim 编辑器处于 command mode ,称作命令行模式吧。

我们按键盘上的小写字母 i,我们发现最地下出现了-- INSERT --,这表明我们进入了 Insert mode(插入模式),可以开始输入内容了。

此时,我们按键盘上的按键,就可以自由的输入了,比如输入一个hello world字符串吧。

输入完成后,我们按键盘上的 Esc 键,从插入模式退回到命令行模式。

然后我们用键盘输入 : 字符(就是shift键+;),可以发现最低端出现了一个:,此时我们从命令行模式进入了last line mode(称作末行模式吧)。

然后输入字符wq! ,表示w保存+q退出+!强制,我们就把文件保存好了。此时我们用cat命令查看一下文件的内容吧:

$ cat hello.txt
hello world

到此为止,我们就初步学会了vim编辑器的使用。

小节:

1) vim的三种模式

  • 命令模式(command mode):
    • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到末行模式。
  • 插入模式(Insert mode)
    • 只有在插入下,才可以做文字输入,按Esc键可回到命令行模式。
  • 底行模式(last line mode)
    • 将文件保存或退出vi;也可以设置编辑环境,如寻找字符串、列出行号……等。

2) 打开-编辑-退出

  • 打开文件:vim 文件名
  • 插入内容:按i进入插入模式,插入完成后,按Esc退出插入模式。
  • 保存文件:按:进入末行模式,输入wq!,然后回车,是强制保存并退出。

3. vim使用中级

vim之所以强大,是因为它有非常非常多的快捷键和插件,非常厉害!我们一步一步来,此处介绍一小部分最为常用的快捷键。

3.1 进入与退出

  • 进入 vi 命令格式:$ vi filename
  • 退出文件::q! 退出不保存;wq 保存退出

3.2 移动光标

要是想直接用方向键向下左右我也不拦着哈!

我们可以通过如下快捷键来快速移动光标,熟练之后,你会觉得鼠标弱爆了。非常建议练习个10分钟把下面的掌握一下,收益终身。

按键 功能
↑或 k 键 把当前光标向上移动一行,保持光标的列位置。
↓或 j 键 把当前光标向下移动一行,保持光标的列位置。
→或 l 键 把当前光标向右移动一个字符。
←或 h 键 把当前光标向左移动一个字符。
$键 把当前光标移动到该行行末。
^键 把当前光标移动到该行行首。
w 键 把当前光标移动到该行的下一个字的首字符上。
b 键 把当前光标移动到该行的上一个字的首字符上。
e 键 把当前光标移动到该行的该字的末尾字符上。
ctrl+F 向前滚动一整屏正文。
ctrl+D 向下滚动半个屏正文。
ctrl+B 向后滚动一整屏正文。
ctrl+U 向上滚动半个屏正文。

友情提示:
1.在用 k、j、h、l 四个键时,可以在它们的前面加一个数字,这样在需要多次移动光标时不必多次按移动命令。
2.记住 k、j、h、l是上下左右,比方向键快一些。

3.3 正文常用命令

在命令模式下,我们可以按一些键(如a A i I o O)来进入插入模式,然后输入一些内容。待输入完成,按Esc退出。

插入

按键 功能
a 在光标的后面开始插入正文。
A 在光标所在行的行首插入正文。
i 在光标的前面开始插入正文。
I 在光标所在行的行首插入正文。
o 在光标所在行(当前行)的下一行的行首开始插入正文。
O 在光标所在行(当前行)的上一行的行首开始插入正文。
Esc 退出插入模式。

这一部分,建议记住一个i插入就行了,然后用上一节介绍的快捷键移动光标。当然,全会更好。

删除

在插入模式下,按Backspace键就是删除。在命令模式下,有如下快捷键:

按键 功能
x x 删除当前光标所在的字符。
nx 删除n个字符
dw 删除当前光标所在的字。
ndw 删除n个字
dd 删除当前光标所在行。
ndd删除n行

替换

按键 功能
rx 用 x 替代当前光标所在的字符。
nrx 替换n个

恢复

这个太有用了!就是撤销,就是上一步。

按键 功能
u 废除最近的命令,恢复被修改或删除的内容。
U 把当前行恢复到修改它之前的状态。

查找

这个也太有用了,类似windows下的ctrl+f的感觉。

按键 功能
/pattern 在缓冲区中向下查找指定的字符串 pattern。
?pattern 在缓冲区中向上查找指定的字符串 pattern。
n 重复上一次查找命令。
N 以相反的查找方向重复上一次查找命令。

3.4 行编辑命令

键入:,进入末行模式,并在屏幕底部的:号提示符下输入行编辑命令。

按键 功能
set nu 显示正文的行号。
set nonu 取消行号。
1,$p 显示缓冲区的整个内容。
r wqb 将文件 wqb 中的内容读入缓冲区,插入当前光标下。
1,5w clh 将正文中 1 到 5 行的内容写到名为 clh 的文件中去。
2,5d 将正文中 2 到 5 行删除。
2,5t8 将正文中 2 到 5 行复制到第 8 行的后面。
! ls 暂时转出 vi 编辑器,执行 shell 命令 ls。
sh 暂时转出 vi 编辑器, 执行 shell 命令,键入ctrl+D 或 exit 返回正文。

4. vim使用高级

4.1 vim配置文件

我们可以通过修改vim的默认配置文件,来修改用vim打开文件时候的默认配置,举一个例子:

$ vim ~/.vimrc

打开配置文件,写入:

set nu

如下图所示,然后保存退出。

再次用vim打开hello.txt文件,我们可以看到这次默认带了行号。

$ vim hello.txt

因此,我们可以依据它的常用配置文件,来修改成自己喜欢的默认打开样式,喜欢的样式自行百度搜索吧,我举一个例子:

set nocompatible
set nu
filetype on 
set history=1000 
set background=dark 
syntax on 
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
if has("vms")
set nobackup
else
set backup

endif

这个配置文件来自:https://www.cnblogs.com/wuyudong/p/3981410.html

4.2 vim插件

vim可以安装非常多的插件,来打造成一个强大的IDE,自己百度吧。

推荐阅读: 1. Vim十大必备插件 2. 10款优秀Vim插件帮你打造完美IDE