Vim使用摘要笔记
Created at 2016-03-19 Updated at 2017-01-06 Category 工欲善其事必先利其器
插入模式和退出VIM的方法
基本模式:普通模式、插入模式、可视模式、选择模式、命令行模式和 Ex 模式;
派生模式:操作符等待模式、插入普通模式、插入可视模式、插入选择模式和替换模式
删除命令、数字的奥义、撤销和恢复命令
粘贴命令、替换命令、替换模式和修改命令
- 粘贴命令
使用 p 命令可以将最后一次删除的内容粘贴到光标之后。(大写的 P 则是粘贴到光标之前)
这里需要注意的是:如果你需要粘贴的是整行为单位,那么 p 命令将在光标的下一行开始粘贴;如果你拷贝的是非整行的局部字符串,那么 p 命令将在光标后开始粘贴。
- 拷贝命令
其实我们用的最多的还是拷贝粘贴,VIM 用 y 命令实现拷贝。语法跟删除的 d 命令一样:d motion
其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy
则表示拷贝 3 行;y$
表示从光标所在的位置拷贝到行尾的所有字符;yG
则表示从光标所在行拷贝到文件末尾行的所有字符
拷贝完成之后同样使用 p
命令进行粘贴
- 替换命令
VIM 还提供了一个简单的替换命令:r 命令
r 用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符。注意,全程无需进入插入模式,也不会进入插入模式
- 替换模式
对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的 R 键,屏幕左下角出现 – REPLACE – 字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。
- 修改命令
修改跟替换是不一样的!
修改跟替换是不一样的!
修改会进入插入模式,替换不会进入插入模式!
修改会进入插入模式,替换不会进入插入模式!
修改命令我们使用 c 键来启动,格式是:c [number] motion
motion
依然表示范围,[数字]依然拥有奥义,同样是可选的,加上数字表示重复执行多次 motion 范围…
事实上,修改 == 删除 + 进入插入模式
文件信息、跳转、定位括号和缩进
有时候,你可能需要知道当前的文件信息,比如文件名,文件状态,文件的总行数,以及光标所在的相对位置
快捷键 ctrl + g
可以解决你的需求:
- 跳转
在 VIM 有两种方式可以将光标跳转到指定的位置:
- 行号 + G
- 行号
比如将光标跳转到第 333 行的位置,你就输入数字 333,再输入大写字母 G 即可见证奇迹;或者输入冒号(:)进入命令行模式,再输入数字 333,最后回车,也可以跳转到目的地
如果单独输入 G 键(前边没有输入数字),那么光标是直接去到文件的最后一行;如果输入两个小写 g,即 gg
,则将光标跳转到文件的第一行。
- 定位括号
VIM 有个按键可以帮你快速定位到另一半括号,就是 % 键。将光标移动到 (),[],{}
,中的任何一半括号上,按下 %
键,便可看到此时光标已经跳转到另外一半的括号上了
- 缩进
在编写代码的时候我们经常需要对代码进行缩进,VIM 可以使用尖括号(<
或 >
)来控制缩进,我们常用的就是两个同方向的尖括号表示将光标所在的语句进行缩进和反缩进操作。很明显 >>
表示缩进,而 <<
则表示反缩进
不过行数一多……到底要缩进多少行就成了一个问题……这时,你可以按一下 v
进入可视模式(左下角出现 -- VISUAL --
字样),然后通过 h、j、k、l
或 其他 motion
来移动你的光标,此时光标所到之处必被一道亮光所包围(表示被选中),选择好需要缩进的目标后,只需按一下 >
即可完成任务
搜索命令和替换命令
- 搜索命令
最后提个醒:在搜索命令中,.、*、[、]、^、%、/、?、~
和 $
这 10 个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠(\)
,比如你要搜索问号,则输入 /\?
- 替换命令
搜索在很多情况下都是为了替换
通过搜索功能,我们将光标定位到目标位置,如果你确定这个目标是可恶的,需要被替换的,你可以输入 :s/old/new
,这样即可将光标所在行的第一个 old 替换为 new;你如果输入的是 :s/old/new/g
,则表示将光标所在行的所有 old 替换为 new。
输入 : %s/old/new/g
表示替换整个文件中每个匹配的字符串
输入 : %s/old/new/gc
替换提示信息
输入 : 5,13s/old/new/g
替换第 5 行到第 13 行之间的所有 XX
执行shell命令、文件另存为、合并文件和打开多个文件
- 执行shell命令
想知道当前 / 下边有哪些目录和文件,在 VIM 中你可以输入 :!ls
在输入冒号(:)进入命令行模式,输入感叹号(!
),在其后便可以加上 shell
命令。此后 VIM 将临时跳转回 shell,并执行命令。再次按下 Enter 键回到 VIM
- 文件另存为
输入 :w 新文件名
文件另存为
如:输入 :w test2
该命令会以 test2 为文件名拷贝保存整个 test 文件
- 局部内容另存为
言下之意就是,VIM 可以将文件中的局部文本另存为一个新的文件
这就需要你进入一种新的模式,叫:可视模式
在普通模式中按下 V
键即进入可视模式,进入后左下角显示 VISUAL
此时光标的位置开始为选中状态,你可以通过任何移动或范围的按键来移动光标,光标所到之处皆为选中状态(h、j、k、l
移动光标,$ 去到行尾,0 去到行首……):
选好范围之后的操作就跟“文件另存为”一样了;按下冒号(:)
屏幕左下方出现 :'<,'>
现在请输入 w test2
;表示新建一个 test2 文件,并将选中的内容单独存放进去。
这里有个问题,如果路径中已经存在 test2 文件,那么 VIM 会提醒你需要加感叹号(!)才能强制覆盖文件。即输入 w! test2
- 合并文件
所谓合并文件,便是在 VIM 打开的一个文件中读取并置入另一个文件
只需要输入冒号(:)进入命令行模式,然后输入 r
文件名
即可将指定文件的内容读取并置入到光标的下一行中
- 打开多个文件
VIM 还可以同时打开多个文件,并且允许你通过水平或垂直的方式并排它们
VIM 使用 –o 或 –O
选项打开多个文件,其中 –o
表示垂直并排,-O
表示水平并排;例如 vim -o lesson4 lesson5 lesson6
打开后默认光标是落在第一个文件中的,此时之前学过的所有命令都可以上,不过仅限于第一个文件。那如何将焦点(光标)切换到另一个文件中呢?很简单,使用 ctrl + w + w
将光标切换到下一个文件;或者使用 ctrl + w + 方向(方向键或 h、j、k、l)
退出文件的话可以使用原来的 q、q!、wq
或者 ZZ(shirt + z + z)
退出多个文件:命令的后边加上小写 a
,则表示退出动作是针对所有的(ALL):qa、qa!、wqa
其他总结
- 【vim窗口管理】
打开NerdTRee(
:NER-->tab
)多屏幕移动光标左侧
ctrl+w+h
右侧ctrl+w+l
在目录结构打开文件 i0
展开目录结构
自动补全:ctrl+P(基于单词)
【配置VIM】
临时的配置
:set
或者:set all
永久的配置
~/.vimrcor ~/.exrc
一些通用的配置 :
- :set number
- :set autoindent
- :set textwidth=65(vim only)
- :set wrapmargin=15
- :set ignorecase
vim 使用tip
- 编写python程序
自动插入头信息:
#!/usr/bin/env python
# coding=utf-8
输入.
或按TAB
键会触发代码补全功能:w
保存代码之后会自动检查代码错误与规范
按F6可以按pep8格式对代码格式优化
按F5
可以一键执行代码
多窗口操作
使用:sp + 文件名
可以水平分割窗口
使用:vs + 文件名
可以垂直分割窗口
使用Ctrl + w
可以快速在窗口间切换
- 编写markdown文件
编写markdown文件(*.md)的时候,在normal
模式下按 md
即可在当前目录下生成相应的html
文件
生成之后还是在normal
模式按fi
可以使用firefox打开相应的html文件预览
当然也可以使用万能的F5键
来一键转换并打开预览
如果打开过程中屏幕出现一些混乱信息,可以按Ctrl + l
来恢复
快速注释
附录
- vim配置文件和插件
下载地址:超强vim配置文件
运行截图
- vim键位图–重要
入门版
经典版【推荐】
进阶版
增强版