Vim:高亮C++Rawstring中的SQL语句

本文介绍如果让Vim在C++的语法高亮中嵌入SQL的语法高亮。 ...

September 2, 2018

Vim gives you a colorful terminal on Windows

Windows is notorious for its unfriendly and limited terminal environment. All you get is the CMD.exe, which has been the default terminal emulator in Windows for roughly twenty years. There have been several initiatives for improving the situation and providing a better terminal environment on Windows, for example, Cmder, ConEmu, MinTTY etc. But now, everything is going to be different, a new challenger has come, that is Vim (and gVIM, the GUI version of Vim on Windows). ...

May 3, 2018

让Atom编辑器成为你手中的大刀

编辑器就像是厨师手里的菜刀,一个厨师不可能只用一把刀解决所有问题。一个厨师至少要配两种刀,一是在任何情况下都能使用的小刀,以Vim或者Sublime Text这种体积在10MB以下的最好;另一种是像Atom这种大刀,体积在100MB级别,虽然不锋利但是扩展性俱佳,挥舞起来能够吹枯拉朽。 ...

May 13, 2017

软件更新两则:Chocolatey和Vim 8.0

软件更新两则:Chocolatey和Vim 8.0。 ...

September 15, 2016

使用Vim的目录比较插件DirDiff来显示Git改动

使用git的时候常常要用到文件比较工具,图形界面下可选的文件比较工具非常多,但是在终端下好用的就寥寥无几了。 Vim作为一款强大的文本编辑器,自带有文件比较功能。可惜Vim的文件比较功能只能用来查看文件的差异,不能对比目录。不过好在Vim有海量的扩展,有一款扩展可以弥补这个缺憾,就是DirDiff。 下面介绍如何在git中使用Vim的DiffDir插件。 首先我们在~/.gitconfig里面自定义一个difftool叫vimdiffdir: 我们就可以在git的difftool命令中调用vimdiffdir: 方便起见,我们可以为vimdiffdir起一个同名的别名: 来简化了vimdiffdir的使用: git有一个show命令来显示某个commit的改动,有了vimdiffdir,我们也可以自定义一个vimshow命令来在Vim中查看commit的改动,这需要在~/.gitconfig中加入: 然后就可以: 大功告成!...

February 4, 2015

在Vim的Normal Mode和Insert Mode间切换光标提示

Vim是模式化的编辑器,一个常见的操作是在正常模式(normal mode)和插入模式(insert mode)之间切换。这两种模式下面都需要移动光标,如果光标指示能告诉我们现在所处的模式的话,是可以减少一些误操作(比如少按一些ESC)。 如果使用形界面的Vim,如GVim或者MacVim,光标的切换是自动进行的,正常模式下是竖长条,插入模式下是竖细线;但是如果使用的是终端模式的Vim,根据终端能力的不同,可能并不会支持光标的变化。 Vim Tips Wiki上面的这篇文章介绍了如何在一些常见的终端模拟器里面配置光标切换。 Mode-dependent_cursor_in_vim介绍如何配置Cygwin+Mintty下Vim的光标切换。 由于终端的差异性,想找一个通用的光标切换解决方案很难,但是StackOverflow上给了一个基于cursorline的解决方案: 把上面的配置加入.vimrc,产生的效果是:在插入模式下,光标所在行会被高亮,而且高亮模式是对主题敏感的,不同的主题可以有不同的显示,可以是下划线,也可以是特定的背景色,简洁明了。

January 27, 2015

Vim g(global)命令的妙用:将过滤的结果在新窗口显示

原文是Redirect g search output。 查看服务器日志的时候,常常需要把带某些关键字的行过滤出来,集中到一个地方查看。在Vim中,我们可以使用自定义命令来达到这个目的。 下面我们要创建:Filter命令,用来过滤关键字并把结果放到一个新开的临时窗口中: 详细解释: command!, 定义一个命令 -nargs=?, 这个命令接受0或1个参数 Filter, 命令的名字,后面跟的是命令的内容 let @a='', 清空寄存器a execute 'g/<pattern>/y A', 执行'g/<pattern>/y A' (搜索与<pattern>匹配的行,将其添加到寄存A) new, 创建一个新窗口 setlocal bt=nofile, 把当前窗口设为scratch模式 put! a, 把寄存器a的内容粘贴到新窗口 记得把:Filter的定义加入到你的**.vimrc**中。 简单的例子: 过滤将带有404错误的行。 还可以使用正则表达式: 过滤带有red或者blue的行。 如果:Filter不带任何参数,会重复上回搜索的结果。 其他: :help :gPower of gFilter buffer on a search result

July 30, 2014

Vim小贴士:将字母替换成全大写

Changing_case_with_regular_expressionsVim的Normal模式可以使用gU<motion>来将当前字母改成大写。但是想批量修改的话,需要使用Vim的正则表达式查找和替换。 比如我们想将abc替换成ABC,最直接的方法: 或者使用: \U表示把后续的字符替换成大写;表示查找到的字符串,这边是abc。上面命令的执行结果就是把abc替换成ABC。 \U会影响所有的后续字符,要取消其影响的话,需要使用\E: 我们可以配合backreferences使用: 其它: \L将其后续字符替换成全小写。 \u和\l和\U和\L类似,但只作用于紧接其后的字符。 查看Vim帮助:help sub-replace-special

July 10, 2014