1,所有的Unix like系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在,但是目前我们使用比较多的是vim编辑器

vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序的设计

2,什么是vim

Vim是从vi发展出来的 一个 文本编辑器,代码补充,编译及错误跳转等方便编程的功能特别的丰富,在程序员中被广泛使用.

简单来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方,vi则可以说是程序开发者的意向很好用的工具

3,vi/vim的使用

基本上vi/vim共分为三种模式,人别是命令模式(Command mode),输入模式(Insert mode),和 底部命令模式(Last line mode).

3.1,命令模式:

  • 用户刚刚启动vi/vim,变进入命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,比如我们按下i,并不会输入一个字符,i被当做了一个命令
  • 移动光标的相关命令
w(e)    移动光标到下一个单词

b         移动光标到上一个单词

数字0   移动到本行开头

$         移动光标到本行结尾

H        移动光标到屏幕首行

M        移动光标到屏幕中间的一行 

L        移动光标到屏幕的尾行

gg      移动光标到文档的首行 

G        移动光标到文档尾行

ctrl + f   下一页

ctrl + b  上一页
. 移动光标到上一次的修改行
  • 查找
/xuexue      在整篇文档中搜索xuexue字符串,向下查找
?xuexue 在整篇文档中搜索xuexue字符串,向上查找
* 查找整个文档,匹配光标所在的所有 单词,按下n查找 下一处,N上一处
# 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 gd 找到光标所在单词 匹配的单词,并停留在非注释的第一个匹配上 % 找到括号的另一半(确定闭合区间)
  • 复制,删除,粘贴
yy         拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到尾行的内容
dG 删除当前行到文档尾部的内容 p 粘贴yy所复制的内容 x 删除光标所在的字符 u 撤销上一步的操作
  • 数字与命令
3yy        拷贝光标所在行以及向下的3行

5dd        删除光标所在行以及向下的5行

输入模式:

在命令模式下,按下字母i(insert),即进入输入的模式,就可以编辑了...

4,底线命令模式

在命令模式下输入冒号(英文的:),就进入了底线命令模式,在底线命令模式下可以输入单或多个字符的命令,常用命令有:

:q!        强制退出
:wq! 强制写入退出
:set nu 显示行号
:数字 调到数字那行 随时按下esc可以退出底线命令模式

5,vim工作模式

vim按键

  • 移动光标
移动光标的方法
h 或 向左箭头(←) 光标向左移动一个字符 j 或 向下箭头(↓) 光标向下移动一个字符 k 或 向上箭头(↑) 光标向上移动一个字符
l 或 向右箭头(→) 光标向右移动一个字符
向下移动5行 5j
向右移动10个字符 10l
n(space) 按下数字n,列如10,然后按下空格,光标会向右移动10个字符
  • 底线命令
:! command       暂时离开vim指令模式,执行command的结果
列如 :!ip a 临时查看一下ip信息,然后可以回到vim :set nu 显示vim行号 :set nonu取消行号

更多的nb的vim用法请看菜鸟教程:http://www.runoob.com/linux/linux-vim.html

程序员的vim的更多相关文章

  1. vim与程序员 vi/vim 的使用

    vim与程序员   所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以 ...

  2. 作为程序员之 Vim(一)

    开始使用 Vim(一) vim被称为是编辑器之神,如果可以学好vim的话,就可以在键盘上 “健指如飞” 了,可以完全摆脱鼠标来进行文本的定位编辑. 当然,vim还可以进行各种配置,装上各种插件,做成 ...

  3. 程序员的编辑器——VIM

    from:http://blog.chinaunix.net/uid-11278770-id-148579.html Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册      ...

  4. vim配置-程序员【转】

    Ubuntu11.10的vim升级后,版本为vi Improved 7.3.154功能很强大了.不过,程序员要根据自己的习惯配置好vimrc文件,是vim更加得心应手. 注:一般用户在自己的当前目录下 ...

  5. vim与sublime,程序员的屠龙刀和倚天剑

    对程序员来说,写代码是再熟悉不过的事情了,windows系统自带有记事本软件,能写写小规模的代码,可是代码量大了,它的局限性就暴露得很明显了:没有语法高亮,没有自动提示,不支持项目管理,界面难看-- ...

  6. vim与程序员

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  7. linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的

    发现一个比ack更快更好用的:  https://github.com/ggreer/the_silver_searcher   , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...

  8. 运维 06 vim与程序员

    vim与程序员   所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以 ...

  9. [转]C/C++ 程序员必须收藏的资源大全

    from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...

随机推荐

  1. JS打包与代码分割

    参考来源:https://github.com/ruanyf/webpack-demos#demo01-entry-file-source 后面的代码:https://github.com/94713 ...

  2. qt 窗体间通信

    利用qt的信号和槽,可以完成窗体间的通信,下面列出父子窗口利用信号和槽的相关代码. parent窗口: //parent.h #ifndef PARENT_H #define PARENT_H #in ...

  3. C语言 NULL 是什么鬼

    NULL , 0 , '\0'  之间的区别与联系 1.NULL 结构体的使用中,都可以用NULL表示空,那么NULL是什么 #ifndef __cplusplus #define NULL ((vo ...

  4. Triangular Pastures (二维01背包)

    描述Like everyone, cows enjoy variety. Their current fancy is new shapes for pastures. The old rectang ...

  5. 在oracle下我们如何正确的执行数据库恢复

    标签:oracle 数据库 恢复 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jiujian.blog.51cto.com/4 ...

  6. CodeForces 444C 节点更新求变化值的和

    http://vjudge.net/problem/viewProblem.action?id=51622 题目大意: 给定一列n个数字,最初赋予值1到n 两个操作:1.将区间[l,r]内的数改为x, ...

  7. 【BZOJ1492】货币兑换Cash(CDQ分治)

    题意: 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪 念券(以下简称 A 券)和 B 纪念券(以下简称 B 券).每个持有金券的顾客都有 一个自己的帐户.金券的数目可以是一 ...

  8. try catch finally执行顺序 (return / 变量覆盖)

    finally有return 始终返回finally中的return 抛弃 try 与catch中的return 情况1:try{} catch(){}finally{} return x; try{ ...

  9. Simics 破解 转

    http://www.eetop.cn/blog/html/28/1066428-type-bbs-view-myfav.html http://blog.sina.com.cn/s/blog_538 ...

  10. C# 读自己的资源文件

    Assembly assm = this.GetType().Assembly;//Assembly.LoadFrom(程序集路径); foreach (string resName in assm. ...