Vim

分类下相关文章

vim8 自动弹出下拉框提示匹配的代码片段, Completor + Ultisnips

每天在几门编程语言之间切换时,最大的痛苦就是有时候连关键字都会忘掉。例如,PHP 的 for 和 foreach,我经常忘了 PHP 的 foreach 怎么写。。。 虽然有了 VIM 插件 Ultisnips 进行代码片段管理,但是 snip 的 keyword 需要精确匹配才能完成自动补全,而 keyword 我随时会忘掉,白白浪费了大量整理好的 snip。 所以,我需要找一个 VIM 插件,能够实现自动提醒目前已模糊匹配的 Ultisnips snip keyword,然后通过 vim popup menu 展示出备选项列表。 需求描述 输入 fo 时,能自动弹出下拉列表提示选择 fo ...

阅读全文...

Vim 打开当前文件所在的目录

写 Laravel Backpack 组件最痛苦的地方在于路径藏的太深,每次想查看同目录下另外一个文件时,需要重新输入一遍文件目录。 例如: resources/views/vendor/backpack/crud/fields/ 输入一次这样的路径真是太锻炼大脑的记忆能力了! 于是我查了一下是否有这样的 Vim 命令,能否打开当前文件所在的目录。果然有 :Explore 缩写为 :Ex 但是,我更喜欢使用 Split 的方式打开特定目录 :Vexplore 缩写为 :Ve ...

阅读全文...

VIM 中 tabstop 与 softtabstop, shiftwidth 的区别

VIM 中处理 TAB 异常的方便。 键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念。 显示当前文件中的 Tab /\t 实际上,就是查询 \t 符号。 shiftwidth 用于设置 换行时的自动缩进列数 行选择后,使用 < 或者 > 做缩进时,缩进的列数 疑问来了! shiftwidth 引入的缩进,是 Tab 还是 Space? 从测试来看 如果 expandtab 开启是 Space noexpandtab 且 softtabstop 与 tabstop 一致时,是 TAB 符号。 那就是说,如果在 PHP 代码文件中,不对 Tab 做 ...

阅读全文...

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 ...

阅读全文...