vi和vim编辑器
就像Windows里一定要会使用notepad,Linux中一定要学会vim编辑器。
所有的Linux系统都会内建vi文本编辑器。vim具有程序编辑的能力,可以看作是vi的增强版,可以主动地以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能丰富,在程序员中被广泛使用。
vi和vim常用的三种模式:
一般模式
以vi或vim正常打开一个文档就直接进入一般模式。编辑模式
在此模式下,程序员可以输入内容。
一般在正常模式中按下i就可以进入该模式。命令行模式
在此模式下可以输入一些命令,完成读取、存盘、替换、离开vim、显示行号等动作。
a
和i
是有区别的,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快捷键,可以参考菜鸟教程。
这里放一张图: