茗空间

总结vim的使用方法

是时候总结一下vim的使用方法了,一方面防止自己忘记不常用的指令,另一方面给大家提供一个参考。
等有时间再把文中的链接内容展开介绍。

先来看看我的vim

我的vim

vim键盘图

vim键盘图

vim的安装

exvim中文这里面包含了exvim的安装与配置,以及插件的安装。

vim教程

Vim入门教程这篇文件是我强烈推荐的,入门必备,告诉你如何使用指令,
如何人类的语言来使用指令。
更全面的认识vim: 比如什么是寄存器等
很强的教程:英文版没字幕没看懂

高频组合指令

单指令是必须记住的,这里提几个组合指令。

  • shift+asterisk: 查找光标处关键字
  • 替换: :s/a/b将该行的第一个a替换成b,:s/a/b/g替换该行的所有a,:n,ms/a/b替换n行到m行,%s/a/b替换所有行的第一个a,%s/a/b/g替换所有a
  • 选中: v20G,选中当前行到第20行;V20G,选中当千行到第20行;
  • xp: 交换相邻的两个字母;
  • :9y: 拷贝第9行,不必首先移动光标;
  • gg=G: 格式化文件
  • ciw: 修改光标所在单词
  • vip: 选取当前光标所在段落
  • <<: 左缩进
  • >>: 右缩进
  • ctrl+6: 两个文件切换,go further
  • ctrl+r: redo
  • wall/qall: 保存/退出所有文件

  • :ls: 查看缓冲区

  • :vertical sb N: 纵向切割窗口,N代表缓冲区的编号
  • :bn: 切换缓冲区(即编辑窗口)
  • :bp: 切换缓冲区
  • :bN: 切换指定N缓存区
  • bd N: 删除某个缓冲区

  • mx: 添加(移除)x标签

  • `x: 跳转到标签x
  • :marks: 查看所有标签
  • delm x: 删除标签x
  • qa q @a @@: qa是录制,q是停止录制,@a执行录制,@@执行最近的录制,90@@执行90次
  • :shell/:sh: 执行shell命令, exit返回编辑窗口

  • ggvG: 全选文件内容,不过我比较喜欢

  • vat/vit/vito: 选择html标签, 其中vito是选中htm标签内容后,可以在开头进行增减的选择
  • vaB/viB: 选择花括号内容,B换成b,选择的是小括号的内容, 更多内容参考下面的指令

  • :help visual-operators: 查看高效指令

  • vi -b datafile: 编辑二进制文件
  • :%!xxd: 十六进制显示文件
  • :%!xxd -r: 正常显示文件
  • ctrl+w+h/j/k/l: 跳转到指定方向的子window
  • zc/zo: 折叠/展开代码块
  • zt/zz/zb: 将光标位置置于屏幕顶端/中间/底端

exvim常用指令

  • \fc: 在nerdtree中定位当前编辑的文件
  • \+c+空格/\+cs: 快速注释

常用功能

如何查找js函数定义

  1. 安装etags插件,如果不知道如何安装,请谷度或者百歌;
  2. 在项目根目录执行etags -R;
  3. 将光标置于某函数上,按ctrl+]就可跳转到函数定义,ctrl+t可以跳回去;

如何全局查找

使用命令:GS: \,如果提示lid: can't locate 'ID': No such file or directory
说明ID索引文件没有生成,在你的macvim执行:Update(注意大小写),会更新你的工程,
看看里面是不是却少安装gawk,如果是,请参考这里

如果提示’Can’t find mkid in your system, Please install first’,参考这里

如何快速注释js

  1. 选中待注释的代码块(用鼠标或v);
  2. 按下ctrl+v,进入块选择模式;
  3. 输入大写i,进入插入模式;
  4. 输入//,然后esc,搞定。

提高html编码效率的zen-coding

什么是Zen-Coding?自行百度吧。插件在这里
有一点要说明,就是插件装完了输入html:5然后按快捷键 居然不展开,最后发现需要把当前文件先保存成html格式才行,
估计是这个插件对当前文件类型有检查。

1
2
3
4
5
6
7
8
9
10
11
// 此快捷键是快速生成html代码:<c-y>,
// 以下内容都要配合这个快捷键
// html5基础结构
html:5
// 生成带class的div
div.classname
// 复杂html, 自己体会吧
div>p#foo$*3>a

其他插件

  1. 自动闭合[], {}:https://github.com/jiangmiao/auto-pairs
  2. 自动闭合html标签():http://vim.sourceforge.net/scripts/script.php?script_id=13

最简化的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
" .vimrc
autocmd vimenter * NERDTree
"显示行号
let NERDTreeShowLineNumbers=1
let NERDTreeAutoCenter=1
" 是否显示隐藏文件
let NERDTreeShowHidden=1
" 设置宽度
let NERDTreeWinSize=31
" 在终端启动vim时,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" 显示书签列表
let NERDTreeShowBookmarks=1

vim问题

  1. mac下的y指令不能将内容copy到clipboard:https://stackoverflow.com/questions/3961859/how-to-copy-to-clipboard-in-vim
  2. vim保存文件后webpack不自动编译::set noswapfile,禁用swap文件还是可行的

tmux

用到了vim就不得不提tmux了,多窗口管理工具,很强大

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
创建:
1. tmux new -s session-name
2. prefix + :,然后输入:new -s session-name
s 列出会话
d 删除会话
$重命名
pane:
“/% 垂直水平拆分
z 放大
o 下一个
q 查看所有
x 关掉
window:
c 新建
<num> 窗口好
& 关闭

参考

exvim中文

Vim入门教程

Zen Coding: A Speedy Way To Write HTML/CSS Code

Zen Coding: 一种快速编写HTML/CSS代码的方法