Vim

分类下相关文章

Vim 快速选中刚才 paste 的内容

场景 修复一个微信小程序的 bug。要把部分 onLoad 中的逻辑转移到 onShow 中,原因参见 微信小程序生命周期中 onLoad 与 onShow 的使用场景区别 比较痛苦的一点是,onLoad 中的一些逻辑是在回调中进行的,copy/paste 之后,需要进行缩进整理。 我需要能立即选中刚才粘贴的部分,再进行缩进就方便多了。 对应的 Vim 配置 在 .vimrc 中加入 nnoremap gp `[v`] 下次执行 gp 即可选中刚才 paste 的内容。 命令说明 `[ 是跳转到上次编辑文本的开始 `] 是跳转到上次编辑文本的末尾 参考 http://vim.wikia ...

阅读全文...

VIM 删除一对括号

场景 发现一段无脑逻辑的代码,例如 if (true) { // do something: 微信小程序获取用户信息 // so long: 数据更新 // ... // so long: 数据上传 } 我现在需要删除 if 判断,及对应的括号。由于其间的代码逻辑很长,删除了左括号之后,我肉眼很难找到对应的右括号。 VIM 操作 光标定位到左括号下,执行 %x''x 操作说明 % 是跳到对应的括号 x 是删除当前字符,即右括号 '' 是跳回左括号 x 删除左括号 参考 Remove a pair of parentheses, brackets, ...

阅读全文...

使用 Vim tabular 对代码进行排版对齐

当团队里出现了对代码毫无洁癖的人之后,就会出现这种代码 我是无法忍受这种恶心东西的存在的,通常看到了我就会顺手改掉。 Vim 有个很好用的插件 tabular 可以非常高效地对代码进行排版,例如,这里按 => 进行对齐 :'<,'>Tab /=> 效果如下 参考 http://vimcasts.org/episodes/aligning-text-with-tabular-vim/ ...

阅读全文...

vim 同时打开当前目录下的所有文件

场景 开发微信小程序时,经常要同时打开模板 wxml, 样式 wxss, 逻辑 js 文件。一个个打开非常麻烦,要是能一个命令全部打开就方便多了。 同时在多个 tabs 中打开 vim -p pages/some_page/* 加个星号即可 参数 -p 的含义 通过 man vim 命令,可查到: -p[N] Open N tab pages. When N is omitted, open one tab page for each file. 估计 p 是 page 的缩写。 即,同时打开 N 个 tab 页。一个文件对应一个 tab 页。 ...

阅读全文...

折腾,重装 Mac 上的 VIM8

不确定是 Mac 系统升级,还是 homebrew 升级造成的,反正 VIM8 一直启动报错 Error detected while processing /Users/zhongwei/.vim/bundle/ultisnips/autoload/UltiSnips.vim: line 15: E887: Sorry, this command is disabled, the Python's site module could not be loaded. Press ENTER or type command to continue Error detected while p ...

阅读全文...

Vim NERDTree 的常用操作

用 Vim 写 Laravel 最头痛的是路径太长了,输入一遍 app/Http/Controller/Admin/XxxController.php 简直累死人。所以很有必要重拾 NERDTree https://github.com/scrooloose/nerdtree/blob/master/doc/NERDTree.txt 先读一遍官方文档 新 tab 中打开文件 T 以 vertical split 的方式打开 s 水平 split 是 i buffer 间切换 The commands :bnext and :bprevious will switch to the nex ...

阅读全文...

永久存储 VIM recording 的 macro

背景 有一些 VIM macro 经常会用到,例如 vimwiki 语法转 markdown 语法,每次都要先录入 VIM recording 再使用,让人非常烦躁。 永久存储的方法 使用 VIM recording 的时候,需要录入指定一个字母键,实际上录入之后,这些操作会被记录到对应的 register 中。例如 记录 VIM recording 在 a 键中 qa 记录之后,执行 "ap 会发现对应的操作会以文本的形式展示出来 所以,存储方法就很明显了。 打开 ~/.vimrc, 输入 let @a = "对应的操作,即 register a 中的内容&quot ...

阅读全文...

不同 tmux window 间共享 VIM 文本

习惯性用 tmuxinator 开一个项目代码 window, 同时开一个 VIM Snippet 项目 window,方便随手整理常用的 snippet。 但是比较痛苦的事情是,将现有项目中的代码片段 copy 到 vim snippet 文件中 终端下 vim 与系统共用系统剪切板是老大难问题 使用 tmux 的复制粘贴功能,在 vim 分屏时格式异常 想了一个比较笨的办法,使用文件共享文本 先选中待复制的文本,将其输出到一个临时文件,例如 :'<,'>w /tmp/vim 然后在 vim snippet 的编辑环境下导入临时文件中的内容 :r /tmp/vim 虽然很 ...

阅读全文...

使用 ack.vim 替代 VIM grep

VIM grep 让人不爽的地方 grep 之后,还要输入 :copen,才能看到 quickfix result window quickfix 里的搜索结果,只能在当前窗口打开 而 ack.vim 很好的解决了这两个痛点 安装 ack.vim Ubuntu 16.10 上首先安装依赖 ack-grep sudo apt-get install ack-grep VIM 上使用 Vundle 安装,现在 .vimrc 中加入 Plugin 'mileszs/ack.vim 然后打开 VIM, 执行 :PluginInstall 使用 ack.vim 的高效之处 可以使用快捷键操作 q ...

阅读全文...

VIM 中使用 grep

多年前,初学 VIM 时,都是在 VIM 中使用 grep, 但是自从使用了 tmux,就习惯在新的 tmux window 里使用系统自带的 grep 命令。原因是通常自己的代码, 或者团队的代码都比较熟,用 grep 的次数实际上也不多。后来,VIM 中怎么使用 grep 就完全忘了 ... 但是,轮到改 ecshop 就发现,随时要 grep 代码。特别是项目目录结构不熟悉的情况下。 方法很简单,在 vim 中输入 :grep xxx -r dir/sub_dir 然后输入 :copen 就能看到结果了,切换到 quickfix list,选择要查看的指定文件,然后回车即可 Tip ...

阅读全文...

Mac OS 上 VIM 8.0 安装体验

VIM 8.0 赶在中秋前发布,也算给广大 VIM 脑残粉送上了一份大礼。然而,中秋前要赶项目进度,一直没有抽出时间更新,怕破坏开发环境。正好今天放假,先把家里 Mac 上的 VIM 升级一下,尝尝鲜。 下载源码 The best way to install Vim on Unix is to use the sources. This requires a compiler and its support files. Compiling Vim isn't difficult at all. You can simply type "make install" wh ...

阅读全文...

解决 VIM 下 set past & set nopaste 困扰

做为 ctrl-c ctrl-v 工程师,恰好又是 VIM 党,最痛苦的莫过于,在 paste 与 nopaste 之间来回切换。 特别是在写页面的时候,需要经常 copy HTML 代码,set 操作极大地影响到了编写代码的效率。还是得绑定个快捷键为好。 :help paste 会看到 vim 帮助文档里就有一个不错的解决方案,在 vimrc 里加入如下配置 map <F9> :set paste<CR> map <F10> :set nopaste<CR> imap <F9> <C-O>:set paste<C ...

阅读全文...

生命在于折腾: 重新整理 VIM Snippets

现状 目前是以框架为单元进行整理 VIM Snippets,例如 Laravel 一个仓库, VueJS 一个仓库。但这样太分散了,例如最近这两个框架一起边用边熟悉,顺便整理 snippets, 经常忘记提交更新,以至于回家无法得到同步。 那么所有都放入自己的一个项目好了,方便更新,提交。 之前分开整理,是想遵循 K.I.S.S 的原则,但实际上并没有这个必要。因为 snippets 是很私人化的东西,别人整理的我基本都不用,因为习惯不一样,例如大家对缩写的习惯迥异,没法妥协。所以我也不指望别人会用我的 snippets, 那么干脆放到一个仓库好了。不必顾及到他人的感受。 新仓库 于是动手新建 ...

阅读全文...

VIM Snippets

snippet - n.(尤指讲话或文字的)小片,片段,零星的话 如果让我只保留一个 VIM 插件的话,那么这个插件就是 ultisnips. 有了 ultisnips,可以方便的自己编写新语言的自动补全规则,再也不需要在 .vimrc 中搞一坨恶心的 inoremap 规则了。 ~~同时推荐,自己 fork 一份 vim-snippets, 按照自己的喜好进行定制, 毕竟写代码需要的是自己的风格,别人的代码终究是别人的代码,看着不舒服。~~ 不再推荐 fork 的做法,更科学的方式是自己针对每个新语言,或者新规则,新建一个 snippet git 仓库。这样做的好处是 避免污染公共 v ...

阅读全文...

使用 Vundle 管理 VIM 插件

最近才知道城里人都是用 Vundle 来管理 VIM 插件的,而我们乡下一直都是通过 github 来同步 ~/.vim 目录。 显然通过同步 .vim 目录的方式要繁琐的多,而且不利于更新维护。 Vundle 名字的由来 Vundle is short for Vim bundle and is a Vim plugin manager. 即 Vundle 是 Vim Bundle 的缩写。 Bundle - n. 捆,一批 Vundle 管理 VIM 插件的优势 安装的插件列表在 ~/.vimrc 中一目了然 (支持 GitHub, vim-scripts.org, 本地目录,git 协 ...

阅读全文...