[关闭]
@nemos 2017-05-06T03:19:14.000000Z 字数 1814 阅读 1062

Vim

tools


插件

安装

配置文件在~/.vimrc无则创建
插件在~/.vim/bundles

  1. # 安装 Vundle
  2. git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

拷贝配置文件

  1. filetype off
  2. set rtp+=~/.vim/bundle/Vundle.vim
  3. call vundle#begin()
  4. Plugin 'VundleVim/Vundle.vim'
  5. """
  6. Plugin '你的插件'
  7. """
  8. call vundle#end()
  9. filetype plugin indent on

:PluginInstall 安装插件

Cheat Sheet

指令速查
vim_cheat_sheet_for_programmers


游标移动
vim-shortcuts.png-347.4kB

简明教程

游标移动

  1. H # 移动到屏幕顶部
  2. M # 移动到屏幕中部
  3. L # 移动到屏幕底部
  4. w # 向右至字首
  5. W # 向右至字首 (可含標點)
  6. e # 向右至字尾
  7. E # 向右至字尾 (可含標點)
  8. b # 向左至字尾
  9. B # 向左至字尾 (可含標點)
  10. 0 # 行首
  11. $ # 行尾
  12. ^ # 行內第一個非空白字符
  13. g_ # 行內最後一個非空白字符
  14. gg # 文件第一行
  15. G # 文件最後一行
  16. 5G # 跳至第 5 行
  17. fx # 跳至字元 x 下次出現的位置
  18. tx # 跳至字元 x 下次出現位置的上一個字符
  19. } # 跳至下一段
  20. { # 跳至上一段
  21. Ctrl + b # 向上捲動一個視窗
  22. Ctrl + f # 向下捲動一個視窗
  23. Ctrl + d # 向下捲動半個視窗
  24. Ctrl + u # 向上捲動半個視窗

插入模式

  1. i # 游标前
  2. a # 游标后
  3. I # 行首
  4. A # 行尾
  5. o # 下一行
  6. O # 上一行
  7. ea # 单词词尾
  8. Esc # 退出插入模式

编辑

基础

指令 意义
i 进入插入模式
x 删除光标所在的一个字符
:wq 保存+退出
dd 删除当前行,并将删除的行保存到剪贴板中
hjkl 光标移动
:help 显示帮助

中级

各种插入模式

指令 意义
a 光标后插入
o 下面插入一个新行
O 上面插入一个新行
cw 替换光标所在的单词

简单光标移动

指令 意义
0 移动到行头
^ 到本行第一个非空字符处
$ 到行尾
g_ 到本行最后一个非空字符处
/patten 正则匹配,n到下一个

简单编辑命令

指令 意义
p/P 在当前位置之后/之前粘贴
yy 拷贝当前行相当于ddP
u 撤销
<C-r> 重做
:e <file> 打开文件
:w 保存
:saveas <filename> 保存为
:x, ZZ, :wq 保存并退出
q! 退出不保存,!qa退出不保存所有当前正在编辑的文件
:bn, :bq 下上切换打开的文件

高级

命令的重复

指令 意义
. 重复上一次的命令
N<command> 重复某个命令N次
2dd 删除两行
3p 粘贴三次
100idesu[ESC] 会写下一百次desu

光标移动

指令 意义
NG 到第N行或者:N到第N行
gg 到第一行
G 到最后一行
w 下一个单词的开头
e 下一个单词的结尾
W 语句开头
E 语句结尾
% 在括号头尾进行移动
*, # 匹配光标所在单词并进行下上移动

命令组合

指令 意义
<start><command><end> 命令组合
0y$ 先到行头,拷贝,到本行最后一个字符

终极

当行

指令 意义
0 行头
^ 本行第一个非空
$ 行尾
g_ 最后一个非空
fa 找到下一个为a的字符处
ta 找到下一个为a的字符前
3fa 重复三次
F, T 反向
dt" 删除所有内容知道遇到"

区域选择
基本格式: <action>a,i<object>
- action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
- object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。
示例代码: (map (+) ("foo"))
![区块选择][10]

指令 选择区域
vi" foo
va" "foo"
vi( "foo"
va( ("foo")
v2i) map (+) ("foo")
v2a) (map (+) ("foo"))

块操作
基本操作: 0, <C-v>, <C-d>, I--, [ESC]

指令 意义
0 到行头
<C-v> 开始块操作
<C-d> 向下移动
I-- I是插入,插入“--”
[ESC] 为每一行生效

自动补全
<C-n>, <C-p>
宏录制
录制一个删除第一行字符的宏

指令 意义
qa q开始录制,a指定寄存器名称
0 回到行首
x 删除一个字符
j 到下一行
q 停止录制
@a 使用寄存在a中的宏
10@a 重复宏十次

@@|使用最新录制的宏|
块选择

指令 意义
v, V, <c-v> 开始选择块
J 将每一行连接
<> 左右缩进
= 自动缩进

分屏

指令 意义
:split 创建分屏
:vsplit 垂直分屏
<C-w>+dir 切换分屏
`_, `
<C-w>+, - 增加尺寸

参考

给想学习VIM的超级小白的文章
简明 Vim 练级攻略
A Great Vim Cheat Sheet


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注