Vim 简介

Vim 是字符模式下的一种文本编辑器,不需要图形界面,它是 Vi 的一个发展。
Vim 与常见文本编辑器的区别在于,它有四种模式,“正常模式”“插入模式”“命令模式”“可视模式”。

插入模式是最正常的文本。

打开

使用 vim <filename> 来打开文件,或新建一个文件。

Vim的四种模式

Vim 打开后进入正常模式,通过一些命令可以进入插入模式。

通过输入:进入命令模式,光标会移动到窗户左下角,这种模式下,可以对文件和环境做一些操作。

通过输入 vV 进入可视模式,可以选择一部分文本,然后对其进行操作。

通过 Esc 键从其他模式返回正常模式。

当不知道处在什么模式的时候,可以多敲几次 Esc 来返回正常模式。

一些命令

这里只罗列一些基本操作所需要的命令,如果想了解 Vim 全部命令,可以输入 vimtutor

这些命令都是在正常模式中输入的,其实相当一部分命令可以当做快捷键,这样便于理解。

所有的命令最好在 Vim 下进行尝试。

插入

这一部分命令只使用了键盘上的一个按键,直接敲击即可,可以认为它们是一些快捷键。

这些命令使得 Vim 从正常模式进入插入模式。

这里把大写和小写放在了同一行,应该知道它们是两种命令,功能上有所相似。

i I     在光标前插入 在光标所在行头插入
a A 在光标后插入 在光标所在行尾插入
o O 在光标所在行下一行插入新行 在光标所在行前一行插入新行

移动

在正常模式下移动光标所用的命令。

在一些版本的 Vim 中,在插入模式下可以使用方向键来移动光标,比如 NOI Linux。

h j k l    分别为 左 下 上 右
gg 到文件头
G 到文件尾
<n>G 移动到第<n>行,例如移动到第 10 行,敲击键盘上对应按键 10G 即可
ctrl+f 下一页(相当于 page down)
ctrl+b 上一页(相当于 page up)
zz 光标所在行居中

文件

这一部分命令,首先输入 :,光标将出现在屏幕最下方,输入指令后敲击 Enter 来执行。这部分命令是可以组合的,如输入 :wq,可以在后面添加 ! 来强制执行,如 :wq!

:w      写入
:q 退出

编辑

x       删除当前字母
dd 剪切当前行
gg=G 整理全文代码缩进
V 选择部分行(从光标所在行开始,通过jk移动选择)
d 剪切
y 复制
p 粘贴,在正常模式
u 撤销
ctrl+r 反撤销

环境设置

Vim 中有一些属性通过设置来调整。

:set ai             自动缩进
:set nu 显示行号(number)
:set ts=4 TAB 的宽度为 4
:set expandtab 将TAB替换为空格

.vimrc

如果不想每次打开 Vim 的时候都设置一遍环境,可以写一个 .vimrc 文件,每次打开 Vim 的时候都会先执行一次。

~/ 下创建 .vimrc 文件,输入例如 set ai,即省略 :

更多命令

环境设置

:set fdm=indent     设置按缩进分层折叠代码
:set sw=4 设置宽度为 4 的缩进为一层,用于折叠

折叠

zm      关闭所有折叠
zM 关闭所有折叠及其嵌套的折叠
zr 打开所有折叠
zR 打开所有折叠及其嵌套的折叠
za 关闭、打开光标下的折叠
zA 关闭、打开光标下的折叠及其嵌套
[z 到当前打开折叠的开始
]z 到当前打开折叠的结束

显示

:vsplit <文件名>       分屏显示另一文档(竖直分割)

最新文章

  1. 【WP 8.1开发】如何处理摄像头翻转的问题
  2. ios基础之 透过页面跳转来认识 Strong 与 Weak
  3. 记录C++学习历程
  4. VS2010/MFC编程入门之五(MFC消息映射机制概述)
  5. BCL和CoreFx的区别
  6. js复制内容到剪贴板
  7. php树形结构数组转化
  8. KMP Algorithm 字符串匹配算法KMP小结
  9. Shiro框架配置-applicationContext里面的(仅提供借鉴)
  10. GUI 设计
  11. django项目添加utf-8编码支持中文
  12. laravel框架基础(2)---laravel项目加载机制
  13. CodeForces912E 折半+二分+双指针
  14. layui 导出表格数据
  15. 拿到iframe页面里面的变量及元素的方法
  16. css笔记 - 张鑫旭css课程笔记之 vertical-align 篇
  17. mongodb与关系型数据库优缺点比较
  18. 【HNOI2015】落忆枫音
  19. ajax+json+ashx实现一个页面多个tab的分页
  20. SDN openflow 学习小得

热门文章

  1. 自建 ca 及使用 ca 颁发证书
  2. ERA-Interim数据学习
  3. kali linux 局域网攻击(一)
  4. 拦截RestTemplate的请求
  5. 多浏览器书签同步插件EverSync
  6. Salt-Formulas的使用
  7. Research Guide: Pruning Techniques for Neural Networks
  8. android : 解决android无法使用sun.misc.BASE64Encoder sun.misc.BASE64Decoder 的问题, 无需添加rt.jar
  9. golang程序编译时提示“package runtime: unrecognized import path &quot;runtime&quot; (import path does not begin with hostname)”
  10. xgboost 算法总结