开发工具 Vi 极简入门

chenge · 2017年04月02日 · 最后由 pinewong 回复于 2017年04月02日 · 5796 次阅读

一 闲话几句

vi 是一个古老而有名的编辑器了,尽管现在有现代的编辑器,不过似乎仍然有学习 vi 的必要,一来是方便,Linux 和 Mac 默认都会安装。其次显得比较专业。

我的目标是简短地介绍每天会用到东西,好了闲话不多说,进入正题。

二 进入正题

启动

vi play.txt

退出

强制退出::q! 保存退出::wq

理解两种模式

一开始 vi 似乎难以理解,也许都不知道怎么退出。理解了两个模式就简单了,命令模式和编辑模式。刚启动的时候是命令模式,i 就切换到编辑模式,ESC 按键切换到命令模式。

命令我理解有两种,底行命令用:开头,会显示在底部。操作文本的常用命令就直接输入。有的书介绍是三种模式,我这里统一成两种模式,都是命令。

常用操作

除了输入文本外,通常是在命令模式下,适应了就很简单了。

1 基本操作

i 进入编辑模式,就可以输入了,光标按键也是可以的。很简单吧。

删除行:命令模式下,dd3dd就删除 3 行。

到此就可以简单使用 vi 了。

2 更多操作

2.1 快捷移动

文件头:gg 文件尾: G

段移动:^f, ^b

行头:0, g0 行尾: $, g_

好了,就这么多了,几个命令需要操作适应一下。

2.2 查找和替换

查找::/example, n 继续下一个。?example/example也可以的。由此可以看出:,/,?三个符号都可以开启底行命令。

替换: :s/old/new

全文替换::%s/old/new/g, 注意末尾的 g,这个实际是正则表达式。

逐个替换,这个比较麻烦点,具体的命令可按如下顺序执行:

/which  查找

cwwhat[ESC]     chang word

n   下一个,无需替换

n   继续下一个,需要修改

.   点是用来重复上一次操作,即cwwhat[ESC]
2.3 复制粘贴,普通人的最爱

粘贴:p 复制:yy,yank,大概是快的意思吧。

2.4 undo

undo: u redo: U^r

2.5 块操作

v进入块状态,国标按键就可以选择块了。d 就可以删除块了。 ^v是列块。

2.6 最后,块注释,程序员的最爱

^v选好列块后,I, 注意是大写,输入#,然后两次 ESC,就可以块注释了。 反注释,同样选好列块,d 就可以了。

当然,这个不如现代编辑器的一键操作方便,不过 vi 的灵活性是其他编辑器无法比的。

三 总结

我只介绍了基本的操作,命令都是英语单词首字母,容易记忆,多用就熟了。

更多高级的,等我有了体会再写吧。

请拍砖或者补充。

谢谢分享。

可能是版本差异,对于楼主的操作有一部分不一致或有更简单的方法,以下有问题请指出:

  • 查找是直接:/example,全文替换要加个参数::%s/old/new/g 表示行所有,不然只会每行第一个
  • 行头行尾移动直接是:0$
  • Redo 是 Ctrl-R, U 是撤销多次
pinewong 回复

谢谢指正,ctrl-R, U 都是 Redo 吧。

chenge 回复

不是啊,大写 U 是当前行的多次撤销。

Redo 操作应该是 Undo 后才有的(就像 Ctrl-R 只有 Undo 后才有效果),但是大写 U 只要写完代码就能用,这说明意义上肯定不是 Redo 吧

pinewong 回复

我这里 U 也是 redo,可能版本不一样吧,我用的 spacevim。

chenge 回复

嗯嗯,有可能,没用这个,哈哈

需要 登录 后方可回复, 如果你还没有账号请 注册新账号