vim 总结:
vim 辅助记忆神图:
进入Vim自带的教程里
$ vimtutor
检查vim支持的功能
$ vim --version
注意:Mac 自带的 Vim 不支持复制内容到剪切板
光标快速移动
h
,j
,k
,l
: 左,下,上,右w
: 光标移动至下一单词首位b
: 光标移动至当前单词首位,如果光标已经在当前单词首位,就移动到前一单词首位e
: 光标移动至当前单词末位,如果光标已经在当前单词末位,就移动到下一单词末位$
: 光标移动至行末^
: 光标移动至行首gg
: 光标移动至文本首行Shift + G
: 光标移动至文本尾行27 + Shift + G
: 光标移动至文本第27行Ctrl + f
: 向下翻页Ctrl + b
: 向上翻页2 + Ctrl + f
: 向下翻2页
插入
i
: 进入编辑模式,在当前光标处插入文本o
: 进入编辑模式,在当前光标的下方插入新一行a
: 进入编辑模式,在下一光标处追加文本s
: 进入编辑模式,删除字符并插入
缩进
<<
: 向左缩进>>
: 向右缩进
删除
x
: 删除光标处的字符X
: 删除光标处前面的字符D
: 删除至本行行末d$
: 删除至本行行末d^
: 删除至本行行首d0
: 删除至本行行首dl
: 删除光标处的字符dh
: 删除光标前一个字符dd
: 删除光标所在行3dd
: 删除3行dw
: 删除到下一个单词开头de
: 删除到本单词末尾dE
: 删除到本单词末尾包括标点在内db
: 删除到前一个单词dB
: 删除到前一个单词包括标点在内dG
: 删除到文本末尾
查找与替换
f + 字符
: 在当前行的光标之后查找字符F + 字符
: 在当前行的光标之前查找字符/word
: 全文查找 word/.word
: 向后搜索 word?.word
: 向前搜索 wordn
: 查找下一处N
: 查找上一处r + c
: 将光标所在的字符替换成 c:s/foo/bar
: 光标所在行的第一个 foo 替换为 bar:1,50s/foo/bar/
: 在第1行和第50行之间(含)进行搜索和替换:45s/foo/bar/
: 仅仅在第45行进行搜索和替换:%s/foo/bar/g
: 全文查找 foo 并替换为 bar:%s/foo/bar/gc
: 全文查找 foo 并替换为 bar,替换时询问y/n/a/q/l/^E/^Y
:- y表示同意当前替换;
- n表示不同意当前替换;
- a表示替换当前和后面的并且不再确认;
- q表示立即结束替换操作;
- l表示把当前的替换后结束替换操作;
- ^E向上滚屏,用来帮助查看前后内容以决定进行操作;
- ^Y向下滚屏,用来帮助查看前后内容以决定进行操作。
多行查找替换
将 foo 替换成 bar
|
|
选中
v + i + w
: 选中当前光标所在的单词 (iw: inner word)v + b
: 选中当前光标到当前单词的开头v + w
: 选中当前光标到当前单词的末尾ggVG
: 全选解释:
gg 让光标移动到首行 V 进入Visual(可视)模式 G 光标移到最后一行
可视模式下(Visual) 选中内容进行以下操作了的含义:
d
: 删除选中内容y
: 复制选中内容到0号寄存
复制粘贴
yy
: 复制光标所在行的内容p
: 粘贴到光标所在行+y
: 复制选中内容到+寄存器,也就是系统剪贴板,供其他程序使用(在Mac下不可用,因为Mac的Vim不支持剪贴板,可使用以下命令替代):w !pbcopy
: 复制选中内容到+寄存器,也就是系统剪贴版,供其他程序使用+p
: 粘贴系统剪贴板的内容(在Mac下不可用,因为Mac的Vim不支持剪贴板,可使用以下命令替代):r !pbpaste
: 粘贴系统剪贴板的内容
其他
u
: 撤销U
: 行内撤销Ctrl + r
: 取消撤销:!ls
: 等同于在 Shell 终端执行 ls 命令。
自定义快捷键
Vim 通过 map
自定义快捷键,map
是一个映射命令,将常用的很长的命令映射到一个新的功能键上。
对于 map
而言,可能有这么几种前缀:
nore
: 表示非递归。 递归的映射,其实很好理解,也就是如果键a被映射成了b,c又被映射成了a,如果映射是递归的,那么c就被映射成了b。n
: 表示在普通模式下生效v
: 表示在可视模式下生效i
: 表示在插入模式下生效c
: 表示在命令行模式下生效
命令格式:
:map {lhs} {rhs}
其含义是,在 :map
作用的模式中把键系列 {lhs}
映射为 {rhs}
,{rhs}
可进行映射扫描,也就是可递归映射.
\和mapleader变量
mapleader
变量对所有map
映射命令起效,它的作用是将参数<Leader>
替换成mapleader
变量的值,可以用来自定义快捷键的前缀。
let mapleader=";"
: 自定义快捷键的前缀为;
支持系统剪贴板的复制粘贴
|
|
在 .vimrc
进行如上配置后,就支持以下的2个命令了:
;y
: 复制内容到剪贴板;p
: 粘贴剪贴板的内容
支持移动文本到上/下一行
|
|
在 .vimrc
进行如上配置后,就支持快捷键上下移动文本了:
Ctrl + j
: 移动文本到下一行Ctrl + k
: 移动文本到上一行
键表
<k0> - <k9> : 小键盘 0 到 9
<S-...> : Shift+键
<C-...> : Control+键
<M-...> : Alt+键 或 meta+键
<A-...> : 同 <M-...>
<Esc> : Escape 键
<Up> : 光标上移键
<Space> : 插入空格
<Tab> : 插入Tab
<CR> : 等于<Enter>
插件管理
pathogen
使用 pathogen 来管理插件会非常的方便,可以让每一个插件占有一个单独的目录,解决了文件分散的问题。只需要将要安装的所有插件放在 ~/.vim/bundle
目录下即可,如果要删除某个插件,只需要将 ~/.vim/bundle
目录下对应的插件目录删除即可,通常使用 git clone 的方式安装插件。
vundle
Vundle 可以说是 pathogen
的升级版,把 git 操作整合进去,进一步简化了操作,用户需要做的只是去 GitHub 上找到自己想要的插件的名字,安装、更新和卸载由 vundle 来完成。
插件的安装目录是:~/.vim/bundle
在 vim 里面运行以下命令来安装插件:
|
|
其他命令:
- 打开doc :
:h vundle
- 更新插件 :
:PluginUpdate
- 清空全部没有在.vimrc中配置的插件 :
:PluginClean
- 清空没有使用的插件 :
:PluginClean!
- 列出所有插件 :
PluginList
- 查找插件 :
PluginSearch
vim-plug
vim-plug 是 vundle
升级版,支持并行安装插件,异步加载插件,配合 NeoVim 可以安装一些比较高级的插件。
vim 常用插件列表
- vim-markdown : markdown 编辑插件
- vim-colors-solarized : vim 配色
- vim-markdown-toc : 生成markdown目录
- vim-instant-markdown : markdown 预览插件(不能使用vundle安装,只能使用npm手动安装)
- nerdtree : 树型文件管理系统
插件命令
vim-markdown-toc
:GenTocGFM
: 生成 GFM (Github Flavored Markdown) 风格的目录:GenTocRedcarpet
: 生成 Redcarpet 风格的目录:GenTocGitLab
: 生成 GitLab 风格的目录:UpdateToc
: 手动更新目录:RemoveToc
: 手动删除目录
插件快捷键
nerdtree
Ctrl + n
: 打开/关闭 nerdtree(自定义的map)Ctrl + w + w
: 左右切换窗口
.vimrc 配置
以下是我的 vim 配置:
|
|