vim学习之查漏补缺.
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。之前看到 vim 想到了黑客帝国里的情景,只见黑色的电脑屏幕上, 字母在飞快的变换着,当时就觉得好厉害啊,与我相隔十万八千里。
还得说点题外话,既然是查漏补缺的文章,就记录一下第一次见到 vim 操作时的情景吧. 还记得,刚入行时,做移动端项目,需要在手机上测试,这需要手机连接电脑,这可怎么办呢,还好家里有前辈,于是叫来前辈帮忙, 说是可以通过 apache 建立服务,手机与电脑同一网络下,输入网址即可看见我做的页面了,哇,听着就好高深的样子(对于入行前 是电脑白痴,前端又是一通自学的人来说),这位前辈在网上搜了搜,第一件事是把 mac 自带的 terminal 打开,噼里啪啦弄了一通 ,就好了(哇塞,这个敬仰之情).搞定之后,我也按照网上的教程,到了 vi 这一步时,怎么弄都没反应,只好把终端退出,这个就不了了之了.
用vi创建,编辑,保存文件
1.创建文件
使用终端创建
1
2
3$ mkdir vim-study
$ cd vim-study
$ vi hello.md //vi 指令,创建一个文件,并进入编辑模式在 vim 编辑器中创建
- 光标在目标文件上, 键入
m
a
添加文件夹或文件m
移动到其他位置d
删除,此删除为永久删除,无法找回,请留意r
在 Finder 中显示该文件o
使用系统默认编辑器打开该文件q
快速查看该文件c
复制该文件至其他位置l
显示该文件信息
- 光标在目标文件上, 键入
2.编辑文件
出现如下图内容,此时处于normal
模式,需进入Insert
模式,方可进行编辑,输入i
即可进入Insert
模式
3.保存
如下图:编辑区和状态区,编辑完成后
- 按下
esc
进入normal
模式, - 保存并退出=>
:wq
(w:write,q:quit) 或ZZ
或:x
- 保存=>
:w
- 直接退出不保存=>
:q!
- 强行退出不保存所有正在编辑的文件=>
:qa!
- 另存为=>
:saveas
此时,创建一个文件,并进行编辑保存的工作初步完成!
vi编辑中常用的快捷键
1. 模式切换
- Normal模式 =>
esc
或Ctrl + [
,该模式下,按键指令,可进行快捷操作,删除,复制等等 - Insert模式 =>
i
或a
或s
,进入编辑模式 - V-line模式 => Normal模式下,
enter
,以空行为分界线,连着的n行属于一块儿,按enter
可进行整块儿向下选择 - V-block模式 => Normal模式下,
Ctrl+v
进入该模式,可进块儿操作
2. Insert模式光标插入方向
i/I
在光标前插入/在行首插入a/A
在光标后插入/在行尾插入s/S
删除光标当前内容/删除一行并插入光标o/O
向上/向下新建一行插入光标r/R
替换当前内容cw
替换当前光标到这个词结束
3. 光标移动
- 左=>
h
,方向键,Backspace
(delete) - 下=>
j
,Enter
,+
,方向键 - 上=>
k
,-
,方向键 - 右=>
l
,Space
(空格键),方向键 - 向下翻页 =>
Ctrl+f
- 向上翻页 =>
Ctrl+b
- 向下翻半页 =>
Ctrl+d
- 向上翻半页 =>
Ctrl+u
- 向下/上按段落跳转 =>
{/}
(以空行来区分段落) - 页首=>
gg
- 页尾=>
G
- 光标移动至第n行=>
nG
/:n
- 按照单词移动:
- 移动至下一单词开头=>
w/W
(以标点符号为跳动基准/以空格为跳动基准) - 移动至下一单词结尾=>
e/E
- 移动至上一个单词=>
b/B
- 移动至下一单词开头=>
- 多行插入 (同时在多行内选中的地方进行插入相同内容)
1.Normal状态下Ctrl+v
开始块儿操作Ctrl+d
或hjkl
向下移动I--
+esc
(此处--
为插入内容示例)
4. 复制粘贴
- 剪切
nx/X
剪切光标当前所在n个字符;ndd
剪切当前行;d$/0/^/G/gg/w/b
删除光标至该行尾;d
+hjkl
删除左下右上内容dt*
删除至*
第一次出现;D
=d$
- 删除
插入模式下的删除操作- ^u 删除当前航
- ^h 删除前一个字符
- ^w 删除前一个单词
- 复制
y$/0/^/G/gg/w/b/e
光标至该行首;nyy
复制n行;yt*
复制至*
第一次出现;n"a/Ayy
复制至a
缓存区,可分别存储到26个英文字母的缓存区中,在分别进行粘贴;
- 粘贴
np/nP
粘贴至当前位置前/后;"ap
粘贴a
缓存区的内容;
- 替换
r/R
非插入式替换/替换直至esc
;cc/S
整行替换;c$/0/^/G/gg/w/b/e
替换;C
=c$
替换值行尾;s/S
插入式替换/整行;
5. 撤回操作
- 撤回=>
u
- 取消撤回=>
Ctrl+r
6. 查找
输入查找内容后, 按下回车, 然后使用 n
或 N
进行上下切换
- 语法
/[text]\c
大小写不敏感查找/[text]\C
大小写敏感查找/[text]
向下查找,text为查找内容,回车,n/N切换查找方向?[text]
向上查找,text为查找内容,回车,n/N切换查找方向*/#
向下/向上查找光标所在单词,完全一样;g*/#
向下/向上查找光标所在单词,部分一样;
- 大小写敏感配置
设置大小写不敏感查询
如果有一个大写字母, 则切换到大小写敏感查找:set ignorecase
:set smartcase
7. 替换
替换范围/被替换内容/要替换成内容/[每次替换前询问confirm/不显示error/不询问整行替换global/不区分大小写ignore]
:[range]s/pattern/string/[c,e,g,i]
c: 需要确认;
e: ;
g: 全局替换;
i: 大小写不敏感 I: 大小写敏感
- 全局替换
:%s/foo/bar/g
- 当前行替换
:s/foo/bar/g
- 选区替换(在有选区的情况下, 输入 : 会自动添加 ‘<,’>)
:'<,'>s/foo/bar/g
- 2-11行替换
:2,11s/foo/bar/g
- 当前行与接下来2行
:.,+2s/foo/bar/g
8. 排版
=
按格式显示<</>>
左缩进/右缩进;- 获取
tab
值::set tabstop[=4]
每一级缩进长度
:set shiftwidth[=4]
~
大写切换, 反向切换;gu
和gU
, 全部切换成小写或大写;
9. 文件格式
:set filetype[=html] 获取[设置]文件格式;
10. 行号设置
:set number
11. 块儿操作
如在行头添加
--
^
到行头<C-v>
开始块儿操作<C-d>
或hjkl
选择操作行I--[ESC]
I
是插入, 插入内容 ‘–’, 按下ESC
为每一行生效(这里可是是删除x
, 替换r
等等操作)
如在行尾添加 ‘–’
<C-v>
j/k
选中行$
到行尾A--[ESC]
A
插入内容--
, 按下ESC
为每一行生效
12. 分屏
- 左右屏
:vsplit
double<C-w>
or<C-h/l>
左右屏切换
- 上下屏
:split
double<C-w>
or<C-j/k>
上下屏切换
13. 书签
ma/A
设置书签本文档/各文档间,a/A
是26字母;`a
至书签a
处;'a
至书签a
行行首;
vim 相关
1. MacVim
the text editor for Mac OS X
2. spf13-vim
一个 vim 插件的集合体,你所能用到的插件,基本上都在这里可以找到。一键式安装。
vundle a Vim plugin manager
3. Vimium
Chrome浏览器插件,可以在 Chrome 中使用键盘操作页面,快捷键如同 Vim。If you use vim that you are worth owing Vimium. It’s so cool.
插件如是介绍 “The Hacker’s Browser. Vimium provides keyboard shortcuts for navigation and control in the spirit of Vim.”
补充
1. 删除光标所在单词, 并进入编辑模式bce
2. 查找
`*` 与当前光标所在单词相同的下一个单词
参考资料
1.大家來學VIM