vim编辑器的基本用法
文章目录
【注意】最后更新于 July 4, 2017,文中内容可能已过时,请谨慎使用。
基本操作
基本概念
动作:是指移动光标的操作,你肯定很熟悉 h、j、k 和 l,以及 w 和 b。但其实,/ 也是一个动作。
|
|
操作符: 对某个区域文本执行的操作。比如,d、~、gU 和 > 都是操作符。这些操作符既可以在普通模式下使用,也可以在可视模式下使用。
|
|
文本对象:
|
|
缓冲区列表
缓冲区的几种状态:已激活,已载入,已列出,已命名
|
|
创建一个无名临时缓冲区
|
|
激活一个缓冲区
|
|
命名一个缓冲区
|
|
参数列表
|
|
操作命令范围概念 关键字符:,|;|数字|$|%
跳转历史和变更历史
|
|
常用命令
space-Vim使用文档
空格 f t
打开/关闭树型栏
SPC f R
刷新文件结构目录
, f c
unite命令集合快速查找命令集
SPC b h
返回vim主页
SPC f r
最近打开过的文件清单
markdown插件命令
,1..3
快速标题格式###
生成章节
,ct
在当前位置插入所有章节的清单
,cs
新建窗口显示博客章节目录清单,支持编辑时跳转到指定的章节位置
,cp
预览博客发布的效果
git插件命令
SPC g s
git status
SPC g d
git diff
AsyncRun git add file
git add file
SPC g c
git commit
SPC g p
git push
unite
Vim插件:Unite新手指导(译) Unite可以在一个项目中快速浏览文件。但是它不仅限于文件,其他任何可以列出的东西都可以很好的被显示和搜索。这个开放式的特性很可能是人们找到它的原因
用法
Unite命令采用的格式为:Unite source,其中"source"是buffer,file和file_rec其中之一。
buffer
: 浏览当前打开的buffer列表
file
: 浏览当前目录的文件列表
file_rec
: 递归的列出当前目录的文件
当一个命令被使用,一个新的水平分割窗口会被打开。
比如,命令:Unite file
将会显示当前目录的文件列表。在这个窗口中,标准的Vim命令模式下的命令可以使用。可以使用“j
”和“k
”浏览该列表,可以使用“/
”来查询。如果你在一个文件上按下enter
键,Unite将会打开它。如果光标是在一个目录上,Unite将会进入该目录,并且更新该文件列表。
使用NERO Tree命令
查看帮助命令
|
|
将选中的目录变为根目录:
|
|
模式
插入搜索模式
如果你在Unite窗口进入插入模式,光标将会移到该窗口的最上方,并显示“>”提示符。输入字符会搜索该列表–这里和FuzzyFinder相似。和常规vim一样,按
命令模式
在命令模式下,当光标在一个文件上,按下a,Unite会显示一个可以操作该文件命令的列表。这个命令列表被称为actions,这个列表可以像Unite其他部分一样被搜索和调用。
操作
actions可以组合通配符。如果输入:Unite file, 然后按下*将会标记所有文件,再输入a将会列出所有actions,最后选择above,Unite将会打开所有被标记的文件。
单行操作
光标移动
hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
- 单词移动: 1.一个单词由字母,数字和下划线组成,那么就用小写的e和w。即:程序变量移动。 2.单词是由blank字符分隔符,那么就用大写的E和W。 即:程序语句移动。
|
|
- 本行移动:
|
|
- 行间移动:
|
|
多行范围
范围 (Ranges) 其实很好理解,但很多 Vim 用户的理解不到位。
- 很多命令都可以加一个数字,用于指明操作范围
- 范围可以是一个行号,用于指定某一行
- 范围也可以是一对通过
,
或;
分割的行号 - 大部分命令,默认只作用于当前行
- 只有
:write
和:global
是默认作用于所有行的
范围的使用是十分直观的。以下为一些例子(其中,:d
为 :delete
的缩写):
命令 | 操作的行 |
---|---|
:d | 当前行 |
:.d | 当前行 |
:1d | 第一行 |
:$d | 最后一行 |
:1,$d | 所有行 |
:%d | 所有行(这是 1,$ 的语法糖) |
:.,5d | 当前行至第 5 行 |
:,5d | 同样是当前行至第 5 行 |
:,+3d | 当前行及接下来的 3 行 |
:1,+3d | 第一行至当前行再加 3 行 |
:,-3d | 当前行及向上的 3 行(Vim 会弹出提示信息,因为这是一个保留的范围) |
:3,'xdelete | 第三行至标注 为 x 的那一行 |
:/^foo/,$delete | 当前行以下,以字符 “foo” 开头的那一行至结尾 |
:/^foo/+1,$delete | 当前行以下,以字符 “foo” 开头的那一行的下一行至结尾 |
需要注意的是,;
也可以用于表示范围。区别在于,a,b
的 b
是以当前行作为参考的。而 a;b
的 b
是以 a
行作为参考的。举个例子,现在你的光标在第 5 行。这时 :1,+1d
会删除第 1 行至第 6 行,而 :1;+1d
会删除第 1 行和第 2 行。
可视化区域选择并编辑文本
1.区域选择其命令格式:
<action>a<object> 或 <action>i<object>
在visual 模式下,这些命令很强大。
action
可以是任何的命令,如 d (删除)
, y (拷贝)
,v (可以视模式选择)
。
object
可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 ‘、 )、 }、 ]。
示例: 假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。
|
|
2.可视化选择: v,V,
前面,我们看到了
|
|
3.在所有被选择的行后加上点东西:
|
|
文本编辑
插入光标位置
|
|
操作文本:
1.删除:字符,单词,行
x → 删当前光标所在的一个字符。
cw → 替换从光标所在位置后到一个单词结尾的字符【准确的说是删除从光标位置到一个单词结尾的字符并进入插入模式】
dd → 删除当前行,并把删除的行存到剪贴板里
通过行号确定你要删除的行;
set nu → 显示行号;
:32,65d → 32-65行就被删除了
2.拷贝:单词,行,段
ye → 当前位置拷贝到本单词的最后一个字符。
yy → 拷贝当前行相当于 ddP(dd删除当前行,再粘贴)
0y$ → 拷贝当前行,即:光标移动组合操作格式:<start position><command><end position>
y2/foo → 拷贝2个 “foo” 之间的字符串。
还有很多时候并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:
d (删除 )
v (可视化的选择)
gU (变大写)
gu (变小写)
等等
注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等
3.粘帖:
|
|
文章作者 iTBoyer
上次更新 2017-07-04