vi和vim编辑器

就像Windows里一定要会使用notepad,Linux中一定要学会vim编辑器。

所有的Linux系统都会内建vi文本编辑器。vim具有程序编辑的能力,可以看作是vi的增强版,可以主动地以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能丰富,在程序员中被广泛使用。

vi和vim常用的三种模式:

  • 一般模式
    以vi或vim正常打开一个文档就直接进入一般模式。

  • 编辑模式
    在此模式下,程序员可以输入内容。
    一般在正常模式中按下i就可以进入该模式。

  • 命令行模式
    在此模式下可以输入一些命令,完成读取、存盘、替换、离开vim、显示行号等动作。

ai是有区别的,a会定位到当前光标的下一行。
:wq表示保存并退出(w表示write,q表示quit),:q表示退出但不保存,:q!表示强制退出
如果你已经修改了文件,用:q是无法退出的,会提示

也就是说修改了文件后想不保存退出只能用:q!
:q是用来查看但不修改后退出的。


简单案例

使用vim开发一个Hello.java程序,用Xshell来控制。
首先执行vim hello.java,进入vim编辑器正常模式,按i进入插入模式,输入以下内容:

public class hello{
        public static void main(string[] args){
                System.out.println("Hello, World");
        }
}


然后按Esc,输入:wq,回车
使用ll指令可以看到已经新建了个“hello.java”文件


vi和vim的快捷键

快捷键用熟后vim会很强大。
接下来举7个例子:

例1

拷贝当前行(yy),粘贴(p);拷贝当前行下面的5行(5yy),粘贴(p)。
新建个test.java文件,内容为:

在一般模式下,输入y、y,然后按p,即可粘贴

把光标移回第一行,输入5、y、y,窗口下面就会出现:

按p即可粘贴:

例2

删除当前行(dd);删除当前行向下5行(5dd)。
为了方便看出效果,我把文档内容修改了一下:

光标移到a2一行,然后输入d、d,得到:

可以看到a2一行被删掉了。
继续输入5、d、d,得到:

5行被删掉了。

例3

在文件中查找某个关键词(/关键词n:查找下一个)。
修改一下test.java:

在一般模式下输入/hello,回车,可以看到

这时按n就可以跳到下一个hello

例4

设置文件的行号(:set nu),取消文件的行号(:set nonu

例5

编辑/etc/profile文件,使用快捷键到底文档的最末行(G,注意大写)和最首行(gg
使用vim /etc/profile进入profile文件:

这个文件有很多内容,可以用快捷键快速跳转到最后一行。在一般模式下输入G

右下角提示已经跳转到了底端。
再输入gg

右下角提示跳回了顶端。

例6

在一个文件中输入”你好”,然后撤销(u)。
vim test.java打开test.java文件,然后输入“你好”:

Esc回到一般模式,输入u

可以看到最下面提示“1行被去掉”,撤销成功。

例7

编辑/etc/profile文件,将光标移动到第70行(shift + g)。
第一步:显示行号,:set nu
第二步:输入70
第三步:shift + g

可以看到光标定位到了第70行。

还有很多其他的vi/vim快捷键,可以参考菜鸟教程
这里放一张图: