其实很早就想写这篇文章了,虽然晚上介绍vim的文章很多,本博也已经就vim的使用写了70多篇博文,但是由于历史的原因,还有很多人对vim能做什么存在误解,包括:
- vim对中文支持不好
- vim适合临时编辑文本,对IDE的支持不好
- vim的内嵌脚本语言不够强大,不像emacs的lisp那样无所不能
我不知道提出这些论断的人是因为不了不了解vim的现状,还是是对vim心存偏见。
本博在写vim相关文章的时候,一直坚持只谈技术的原则,不会涉及到与其他编辑器尤其是emacs的任何比较,然而最近在看了某些博文之后,觉得为了不让某些已经过时的观点给初学者选择编辑器时造成困扰,写下这篇文章十分必要。
OK,我们正式开始,在文章的末尾,相信大家都会明白上面的几个观点是否正确。
一.普通人的编辑利器
之所以第一点就提到这个,是因为"文字处理"当然是一个编辑器最基本的功能,而能把编辑的体验发挥到极致的也恐怕只有vim而已了。
这一节,也会参考善用佳软对vim的使用心得,相信用户的感受是最好的证明。
- 免费
用户再也不用去网上辛苦的下载D版了! - 提高输入速度
这个相信也没有什么好争论的,纯键盘操作的速度是鼠标无法比拟的,虽然会带来一定的学习成本,但是相信还是值得的。 - 完美支持中文,并支持多种文件编码
很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) - 文本笔记管理
这要归功于vim的一款插件:voom,详情可以参考善用佳软的这篇博文--VOoM(原VOOF):vim实现带折叠双栏树状文本管理
二.程序员的编辑利器
如果你是一名程序员,那就千万不要错过vim,它真的为程序员提供了太多贴心的功能。
- 支持几乎所有语言类型
不夸张的说,vim真的是将这一点做到了极致,只要是大家知道的语言,大到c++,python,小到bash,sql,vim全部都默认支持了这些语言的语法高亮,自动缩进,等等。一个编辑器搞定所有源码编写,不用为每门语言学习他的编辑器,降低学习成本,何乐而不为? - 支持各种语言的代码自动补全和智能提示
详见:vim所支持的自动完成详解,把VIM打造成一个真正的IDE(3) - 快速查找函数定义功能及显示函数列表功能
vim+tags+taglist即可轻松实现上面的功能,功能上完全可以替代si或者vs.详见:把VIM打造成一个真正的IDE(2),在Vim中使用ctags - 支持类似textmate的代码片段功能
我目前使用的是snipMate,当然提供这种功能的插件可不只这一个,你可以有更多选择~ - 集成编译调试功能,快速定位编译错误
vim提供了quickfix的功能,可以集成gcc,g++,java,c#,python,php等各种语言的错误定位功能,极大提高了代码编译调试时的错误定位。参见:VIM-一键编译单个源文件 - 开源
如果发现vim有bug,那么大可以自己去研究代码修复~ - 跨平台
在linux,windows,mac等多平台都有相应的版本,不用担心跨平台开发的问题! - 支持插件,无限扩展自己想要的功能
vim本身有自己的脚本语言,如果你真的不想再多学一门语言,那也不是什么大事,gvim7.3已经默认编译支持了python,ruby,lua,perl等等脚本语言,用你喜欢的脚本语言开发去吧!(我爱python!),与emacs的lisp相比,vim自身的脚本语言确实有所欠缺,但是python较之lisp也算是旗鼓相当了吧
三.vim骨灰级玩家的超级终端
这是我几个月来一直试图总结的结论,也是vim发展至今我认为颠覆性的一个大特性。
其实在我现在看来,vim更像是一个超级终端,vim已经支持用python,lua,perl,ruby等多种脚本语言进行脚本编写,只要你愿意,你可以用脚本语言实现任何你想要的功能,然后通过vim展示出来。
简单来说,即vim替你实现了一个通用的界面,而你只需要编写你的逻辑代码,而展现到屏幕这一层,就调用vim的接口,由vim来完成就可以了~
这就是我所说的超级终端的定义,如果还是不能理解,那我们就用实例来说明吧!
- Vimpress,提供在vim中查看、发布、修改、删除博客的功能
- TwitVim,提供在vim查看、发布、修改、删除twitter的功能
- vimwiki,用vim打造你的个人wiki~
- qiushibaike,在vim中看糗事百科(本博编写)
- Calendar,提供日历的功能,并且可以记笔记
- vimmailr,用vim来发邮件,参见:用Vim(gvim)发邮件(上流哇)
OK,到此为止就结束啦~对照文章开头的那些所谓vim的不足,是否有了新的认识呢? 然而其实vim所能做的远不止这么点,只要你肯去发掘,你会发现vim真的远超乎你的想象!
dxq83 on #
虽然我不是程序员,但是爱好者,在刚开始学vim。这个网站很好,会常来看看学习!
Reply
Dante on #
哈哈,欢迎交流~
Reply
fanhe on #
缺点:1.无论你怎么搞,还是不能想ide那样方便的管理项目,调试等等。一句话,vim就是没办法做到现代的ide一样。
2.如果你的文本经常要长行的,不要用vim了。
Reply
Dante on #
1.关于第一点我不发表意见,并不在技术讨论的范畴。不过我一直有个观点:一件事你完成了,对别人宣布这件事是可以实现的,别人肯定会相信;但如果一件事你没做出来,就对别人宣布这件事情是不可能完成的,是没有什么说服力的。
2.第二个问题很容易解决:
<pre lang="vim" line="1">
set display=lastline
</pre>
Reply
fanhe on #
往下滚还可以,往上滚就知道什么叫晃动
Reply
== on #
额,不太理解,所谓的长行是不是指很长的一个行,要切换这个长行的文字用 jk 不是很好使?用了set display=lastline,并没有达到像Word那样。。求解
Reply
Dante on #
呃,不是,set display=lastline主要是为了解决一行的显示超过一屏时的问题。
你说的切换行用gj,gk就可以
Reply
== on #
OK了,谢谢。
Reply
lisfan on #
哈,又学了一招,这问题困扰我挺久了。
不过我现在使用vim的最大原因还是在文本编辑上,纯键盘操作可以让我更专注于在内容上,至于将vim当成ide编辑器,我现在遇到的难点是对某一语言的插件寻找配置,太耗费时间了点(如果有朋友可以放出针对某一语文的插件及配置的话,再好不过了)因为并不是只用一种语言啊。总之先在文本编辑领域成为“砖家”先
Reply
== on #
请问 你知道怎么在win下设置vim背景透明吗?网上的说法都是在linux下的终端里用vim,再将终端设置为透明;或者是善用佳软的用ahk脚本设置,我下了上面的ahk脚本,没用……
Reply
Dante on #
win下面,vim自身确实没提供这样的功能,如果善用佳软那个没用的话,我也不知道咋搞了,没有研究过。。
Reply
kit393 on #
搜索挖坟出来的:
这个不是vim本身的功能,是由第三方程序提供的,ahk不可以的话搜索一下类似功能的小软件.
Reply
梧桐树 on #
使用 dm2 可以实现 该功能
Reply
依云 on #
如果你的文本经常要长行的,那么你不应当把它当作普通的纯文本处理,比如由程序生成的长长的 XML 或者 json 文件。
Reply
梧桐 on #
说的有点道理,但是在纯编辑领域VIM肯定是最强的~没有之一~
Reply
artmath on #
总有一些人愿意把vim和ide相提并论,真是让人很不爽。不是vim没有ide那么强大,而是受使用者的水平限制,水平低的人觉得很罗嗦,而水平高的人配置得比ide还强大顺手。
vim就是一个编辑器,自己需要的功能自己去扩展,有没有ide那么强完全是使用着的水平,像什么netbeans,visual studio,这些玩意,人家那是商业软件,多少人在开发?花了多少钱?
而vim就是一款开源免费的编辑器。
当年没有这些ide之前的黑客不也总vim,emacs么。
Reply
fanhe on #
肤浅。
Reply
zsneoks on #
一句话。
使用者有多长。vim就能有多长。
Ps:在博主这又学了不少东东来
Reply
Dante on #
呵呵,欢迎经常来讨论~~
Reply
Jacky Liu on #
vim 是最强大的 IDE。以上。
Reply
vimererer on #
vimer的确很强大!
博主也很强大
对待任何事物都要奔着学习他的好的一方面的态度去看待~这样自己才能有所提高·
Reply
老戴 on #
好久没来回复了!最近在学习emacs,想试试看哪个更适合我一点
Reply
Dante on #
呵呵,倚天屠龙,得其一便可独步武林~
Reply
Eric on #
作为编辑器vim是强大,但绝对不是无所不能。要比多才多艺,.NET,Java的IDE要甩开vim几条街几乎毫无压力。
另外一个不爽的地方是:80%的时间只是在使用20%的功能,只要肯记,vim的操作风格非但无害而且好处多多,但是那80%的功能有时还是要用到的,譬如要set某个比较偏门的option,运气好时能google之,I‘m not lucky时就只能一页一页的翻文档。。。
Reply
Dante on #
对与.NET,java的IDE的比较同样不发表意见,不在技术的范畴。
不过vim的精髓不仅是hjkl,那只是vim外在的表现,文章中的所说的第二和第三大类也同样是vim非常重要的特性。
Reply
依云 on #
Vim 本来就不是无所不能的,Vim 说过你不能用它来洗盘子的,只有 Emacs 说过自己能煮咖啡。
如果你要的是 IDE,那么你不应该使用 Vim。Vim 是通用的文本编辑器,根本就不是专门写某种(或某些)代码的 IDE。
Reply
fanhe on #
所以我从不向想要在linux下要ide的同学推荐vim。
Reply
Mike Ma on #
Emacs和Eclipse比起来,前者胜过后者毫无压力
Reply
wangjl on #
ide隐藏了太多东西,想走远一点的同学还是看着脚下,编译器、连接器一步一个脚印的走过来比较好……
选vim只是因为我在很多机器上需要用它,emacs需要太长时间来调教……
“vi任何地方都有”,虽然这个说法不太牢靠了
另外,我想我应该可以用vim来煮咖啡。
Reply
依云 on #
vi 的确很多地方都有啊,连 busybox 里都有一个呢。不过 vi 和 vim 相比差多了,而且有些奇怪的行为,比如我写好 :q! 正准备按回车时,突然反悔了,于是 Esc,结果 vi 还是会执行命令。。。
Reply
wangjl on #
貌似现在很多发行版用nano代替了vi,比如ubuntu、gentoo什么的……让人很郁闷,安装的时候第一件事就是装vim,不然根本没法用。
busybox上的vi确实很让人感动。
Reply
依云 on #
除了嵌入式系统外,还没有不能用 vi 的 Linux 系统吧?Ubuntu 也有 vi 命令的,虽然默认是链接到 vim.tiny。
Reply
jayklx on #
Gentoo木有。。。
灰常纠结。。。居然带了Emacs不带Vim。。。
Reply
fanhe on #
当你都了解了编译器、连接器啥的,然后也会写makefile了,那又如何?自己手动一个一个打命令?反正我就是想偷懒,但是又用惯了vim,就会对没有把vim作为ide编辑器的种种郁闷
Reply
wangjl on #
我确实敲过很多makefile,现在敲automake,对c/c++来说,完全掌控自己的代码太重要了,ide隐藏的细节都是将来的风险
Reply
Dante on #
我也是一直在写自己的makefile,后来写的多了之后,就自己用snipmate做了几个makefile的模板,然一直在用~ 很顺手~~
Reply
fanhe on #
那你为什么信任makefile?难道makefile就不会隐藏细节?你信任自己写的makefile就好像我信任一个稳健的ide设置的一个项目。客观来说,vim能做很多事,但不是万能。这句话不能只说一半,否则就是误人子弟。其实我想过跑emacs那里的,因为它比vim“万能”,但是那操作方式实在是不适合我。
Reply
依云 on #
当你完全了解你的 IDE 时,并且知道它的 bug 很少时,它也是可信的。只是,谁给我个 Visual Studio 参考手册之类的东西?
Reply
fanhe on #
全世界的ide只有visual studio一种?我用的ide只是让它帮我组织项目,帮我敲那一大堆的编译命令等等这类
Reply
依云 on #
呃,我只是举个例子嘛。不管是什么东西,如果我不知道它是怎么调用后端的编译器什么的我就不放心,说不定哪天死得很惨还不知道自己是怎么死的。
Reply
雨碎江南 on #
我强烈赞同这个观点,以前做JavaEE项目的时候给IDE忽悠惨了,所以现在只用Vim+Ant+JDK作为基本工具,重要的web.xml什么的都是手写.令我惊奇的是这样同时提高了编辑效率和代码可靠程度......
Reply
zsneoks on #
我觉得单就这个makefile的问题来讲,既然ide可以自动生成,那么就表示存在自动生成的算法。把这个算法设计出来写成个自动生成makefile的脚本那不就搞定,一劳永逸了。
当然,如果非说这样还得自己去想和写这个脚本,而ide下已经有人替我们想和写好自动生成过程直接使用,来做为ide强于vim的理由。我就实在没什么话好说了。
总之,只要愿意动手,计算机上的事情应该都可以实现,我觉得。
Reply
madper on #
其实vim也可以煮咖啡的, 你所需要的只是一个支持超文本咖啡壶控制协议的咖啡壶而已. 虽然这个协议一开始是恶搞的, 但是真的有国外蛋疼的人做出来了..
Reply
依云 on #
呃,我用的 Vim 时除了找插件外很少 Google 的。如果 :h 的补全中找不到的话就试试 :helpgrep,实在不行可以到 vim_use (或者中文的 vim-cn)邮件列表里去问。当然也欢迎到 vim-cn@appspot.com 这个 XMPP 群来讨论。
Reply
亚弥 on #
这个XMPP群咋访问呢?GTalk可以不?
Reply
依云 on #
当然可以了~
Reply
Javaer on #
喜欢用vim,转了,谢谢博主。
Reply
Ricepig on #
正在学习VIM,作为文字编辑器它是给力的。
不过,文章中的第二部分。。。VIM和史前ide比比还是可以的,和现代的ide比。。。就说几点吧
1、调试的支持
2、代码智能感知和智能提示
3、项目管理、代码管理和重构等较为“高级”的特性
VIM是很强大的,手指不离开键盘的感觉也确实很好。
但是,Visual Studio,这个宇宙中最强大的ide,也恳请作者感受一下最新版吧,哇哈哈
Reply
Dante on #
我公司的电脑上一直装着vs2010。。。不过好像过了试用时间了。。
其实可能你对文章的第二部分真的理解和我的初衷有些偏差,我的意思是vim虽然只是一款编辑器,但已经集成了很多IDE的功能。这对vim的使用者是福音,毕竟对IDE功能支持的欠缺将不再是拒绝vim的理由了。
本博所有的vim相关文章都是基于推广vim和让vim使用者更方便的使用vim,并非有意要与哪个编辑器或者IDE一争高下。
Reply
Noe on #
就凭VS自带的渣类编辑器也好意思称最强大?笑话!苹果免费提供的Xcode不知道比VS好用多少倍。更不用说和Emacs和vim相比了。
Reply
依云 on #
是的,VS 太强大了,以至于在全宇宙的 IDE 中只有它做到我刚接触时就如同想不到火球一般,此后只好远远躲避。
Reply
依云 on #
s/想不/像碰/
Reply
prife on #
网站很好,收藏,请教楼主一个问题哈
我用gvim的时候,输入中文的时候,搜狗输入法
按下ESC切换模式,有的时候输入法自动变成输入英文状态,有时候却又成了中文状态了,很纠结,楼主有何良策么?先谢谢了
Reply
Dante on #
呃,搜狗输入法没用过,不过我现在用QQ输入法按下ESC是自动进入英文模式的,google输入法好像也没问题。
Reply
prife on #
谢谢,我换了输入法就么有搜狗的那个毛病了。再请教一个问题哈,我试了下配置python,也把你的python.vim放到indent目录下了。但是似乎编写 file.py文件的时候,还是没有正确的缩进。比如我写
for i in range(5):
print i
print所在行又从头开始了,而且按下tab是默认的8字符。我想实现的效果是,按下tab是四空格缩进,但是只是针对py文件,并且可以实现楼主那种漂亮的缩进。我以前用notepad++则无此问题,可以正常缩进。请问是什么原因呢?
系统:win7
版本:gvim 7.3
Reply
prife on #
set nu
set autoindent
syntax enable
" 取消文件备份
set nobackup
" 注释语句
" 设置 mapleader
let mapleader = ","
"设置加载vimrc配置文件的快捷键
map ss :source $HOME\_vimrc
"设置打开配置文件的快捷键
map o :e $HOME\_vimrc
"当vimrc文件改动时,自动加载此文件
"autocmd! bufwritepost _vimrc source $HOME\_vimrc
"Go to last file(s) if invoked without arguments.
autocmd VimLeave * nested if (!isdirectory($HOME . "\mvim")) |
\ call mkdir($HOME . "\mvim") |
\ endif |
\ execute "mksession! " . $HOME . "\mvim\Session.vim"
autocmd VimEnter * nested if argc() == 0 && filereadable($HOME . "\mvim\Session.vim") |
\ execute "source " . $HOME . "\mvim\Session.vim"
"插入python配置的快捷键
map :w:!python %
imap :w:!python %
"pydiction 1.2 python auto complete
filetype plugin on
let g:pydiction_location = '$HOME/mvim/complete-dict'
"defalut g:pydiction_menu_height == 15
"let g:pydiction_menu_height = 20
Reply
Dante on #
好奇怪。。我试了一下是可以的呀?
set autoindent
把这个去掉试试。
Reply
prife on #
去掉了,还是不能对for语句自动缩进,那个python.vim是不是应该放在ftplugin目录下面呢?放在indent目录下似乎没有任何效果。另外不知道是不是vimrc需要做一些设置呢?
Reply
Dante on #
你是不是没有写这句
<pre lang="vim" line="1">
filetype plugin indent on
</pre>
Reply
prife on #
加上这句果然可以了。非常感谢
Reply
showwiki on #
请问Vim支持像Eclipse那种高亮所选的 相同 单词 的功能么?
Reply
Dante on #
自带的serach可以高亮一个。
扩展的mark.vim都可以同时高亮6个。
Reply
showwiki on #
非常谢谢!vim自带的search要敲入所选的单词,gvim中支持双击选择然后高亮么?
mark.vim 的下载页面有个叫mark.vba.gz 的下载链接,和mark.vim的链接 ,有没有简单的教程链接啊,百度了一下,没有相关教程啊
非常感谢站长的热心回答,
Reply
showwiki on #
不好,意思,刚在链接上才看到英文的使用说明,窃问一下,
“m Mark or unmark the word under the cursor”
是指在某种模式下直接按 m 键然后高亮光标所在单词么?我试了一下,没有效果矣?
和{Visual} 是指什么啊?困惑中
Reply
showwiki on #
神啊,居然是指\\ , m 指的居然是\\m, 真是太出乎我的意料了,能改成一个简单点的映射么?
Reply
kikyo on #
http://paste.org.ru/?q6fbue
上面的应该是楼上想要的吧。
Reply
Dante on #
我映射的是,k
<pre lang="cpp" line="1">
map ,k <leader>m
</pre>
Reply
依云 on #
“选择”和“高亮”有区别吗?
Reply
lisfan on #
现在讨论很激烈呢,求一个东西:哪款轻便的划词翻译软件能在vim中使用(现在使用的是有道,翻译时要打开notepad,真麻烦)
Reply
Dante on #
善用佳软之前有片博文,可以看一下:
http://xbeta.info/gvim-powerword-ciba.htm
Reply
梧桐 on #
这个会不会更符合你的需要?http://www.vim.org/scripts/script.php?script_id=3404
Reply
lisfan on #
谢谢梧桐兄了,已经用惯了有道了
Reply
lisfan on #
55~太感动了,终于解决这个问题了,不久前也准备是想将善用佳软的所有博文都看下的,都是精品啊,可能还没有看到这篇吧。谢谢了
Reply
lisfan on #
测试一下,不好意思哈。
Reply
johnson on #
我正准备学VIM
可是看到了好多老文章,说VIM甚至比不过VS。
纯键盘我的打字速度并不快(当然也没有刻意练过)请问我适合用vim吗。。。
Reply
Dante on #
呃,关于VIM和VS的争论已经很多,这里就不多说什么了,不过我个人是更趋向于vim。
对于打字速度的话,这种东西慢慢熟悉了自然会提速,而且用vim也利于你的快速编辑能力。
Reply
jeng on #
请问各位达人,vim中有C# 或 ASP.NET 的插件吗?
不要误会,我也是支持使用VIM 的,但是迫于现在主要做 .NET 开发
VS 中有人做了模仿vim的插件,及其不好用。
和你们一样,我也讨厌VS~
资源占用之多实在是不忍提起
Reply
Dante on #
嗯,很久没写过C#和ASP.net了,在www.vim.org里直接查一下吧
其实可以一步步来,先把vim当普通的编辑器,时间长了,你会发现自己需要的插件都会找到。
Reply
madper on #
vs占用资源真不多, 算是很少的了, vs2008打开之后只占用三十多mb的内存, 比起别的ide或者emacs动辄80mb的内存, 算是很少的了. 只不过vs2008用起来不是很流畅罢了.
Reply
x-snail on #
新手学习了,不知道vim 有没有php 代码补全功能
Reply
Dante on #
http://www.vimer.cn/?p=772
Reply
freiz on #
喜欢用vim写脚本语言,写Java不用IDE相当于自虐吧...就确定别人的几十个类库里面的细节都了解么,反正我是没这本事
两个思路,一是把vim扩展成IDE,这方面我感觉不靠谱,各种语言补全就很难弄,其实也不用弄,像Python、C这些标准库比较小的平时拿来写点儿小片段,搞ACM什么的都没问题。一是Eclipse加上viplugin,手指照样不用离开键盘,大工程下效率绝对能体现出来,缺点是键绑定啥的基本上没有个性化可言了
Reply
Dante on #
嗯,和搞什么样的开发也有关系。
不过我真是什么开发都用vim,无论是c、c++、python、php、html、js……哈哈,习惯了~
Reply
mythyear on #
要是能够用vim收邮件就好了……
Reply
Dante on #
介个。。其实只要肯花时间,也是一样能写出来的……
用vim看、写blog都可以,邮件也没啥不可能的。。
Reply
madper on #
不是一直就可以嘛?
Reply
yulong on #
hi,大神,我想了解下gvim跟vim是什么关系阿?说是gvim强大了一些,但是实质有什么改变么??
Reply
Dante on #
gvim 可以理解为 gui vim,清楚了吧~~
Reply
用emacs也用vim,用python也用lisp on #
总体写得不错,但有的地方不认同,例如这句:
“但是python较之lisp恐怕就是旗鼓相当甚至更胜一筹了吧”
博主又说
“...我一直有个观点:一件事你完成了,对别人宣布这件事是可以实现的,别人肯定会相信;但如果一件事你没做出来,就对别人宣布这件事情是不可能完成的,是没有什么说服力的。”
那么博主是否既懂python也懂lisp,否则说这样的话,也是没有说服力,不如把“python较之lisp”这一句删掉吧
vim好是好,但是不能通过踩低lisp或emacs,来抬高vim
Reply
Dante on #
这位朋友说的很中肯,这种论断确实容易引起纷争,我改一下吧。
Reply
Dante on #
btw,学过一段时间的lisp,很欣赏lisp的编程思想,文中丝毫没有贬低的意思。
Reply
madper on #
虽然我是用emacs的, 但我还是想说, vim可以用python扩展, 确实比lisp易学, 至少对我来说是...
Reply
Fermat618 on #
这里还有个打架帖。
vim强在它是一个编辑效率超高的通用文本编辑器。之后是它的可扩展性。
那些花哨的功能,的确可以代表vim的可扩展性,但是我是不打算用那些了,因为其它专门的程序往往做得更好。
vim不是万能的,可知道了vim的好处,要再去找个替代器就难了。
Reply
bsky22 on #
博主你好,我想只用VIM作键的替换,交换CAPS和左ctrl,达到只有在VIM里面才能体现两键交换的效果,这个能不能实现?谢谢!
由于在VIM里没发现如何表示capslock的方法,目前我才用的方法是用xmodmap交换,在vim里用autocmd的方法,进入vim就替换,退出时就替换回来,不太完美,缺点就是:正在使用vim时,用其他程序都会感觉键被替换掉。
Reply
Dante on #
:h map,看一下,应该有写
Reply
ooops on #
我想问下怎么用xmodmap映射,研究了一下,没太明白。望指教。
Reply
Dante on #
没用过,试下vim自己的map呢?
Reply
ooops on #
不行的。因为capslock属于修饰键,在vim里面没有这个键的映射,mac只能用上面那个人说的方法,或者下一个软件。但是那个方法不太会用,网上下的软件用ps/2键盘不给力,usb键盘可以,但我基本不用usb键盘 = =
对了, 话说我点他的回复,他收不到么?
Reply
bsky22 on #
用vim自己做映射,会形成循环映射,vim会提示错误,所以无法实现,再说vim里没有表示caps_lock的方法。
目前我采用的方法是用xmodmap交换caps_lock和右边ctrl,因为右边的ctrl由于键盘的位置不同而不同,所以很少使用,这样做的好处是既保留了大写键,又不影响日常习惯了的左ctrl操作,还能实现ctrl键的位置与hhkb键盘上的一致。好了,废话少说,上步骤:
1、写一个可执行的shell文件,内容如下:
#!/bin/bash
xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_R"
xmodmap -e "keycode 66 = Control_R"
xmodmap -e "keycode 105 = Caps_Lock"
xmodmap -e "add Control = Control_R"
xmodmap -e "add Lock = Caps_Lock"
2、让这个脚本开机自动运行(不要设置在rc*.d里面,那执行的时候x还没启动,会失败的)
如果你在纯字符界面下,用如下方法:
dumpkeys > tmp
vim tmp 交换键值58和97,然后loadkeys tmp
rm -f tmp
Reply
lijsf on #
不错的站点,学习了~~
Reply
bing on #
vim确实是好用 即使有了IDE 我也愿意内嵌进vim插件 确实是好用
Reply
taowl2003 on #
一直很想用vim来编程,但找了很久也没有搞明白,也许是我太菜鸟了吧。
一个是在win环境下,用vim进行C++调试编译等相关的内容很少,还不是太明白怎么弄。
更重要也很费解的是,一个程序总归会用到一些资源吧,对话框、按钮、编辑框,怎么大家讨论时从来不涉及到这个?怎么用vim来管理和设计资源、界面?这个问题不解决,就没有办法抛弃vs啊。
我太菜鸟,盼指教。
Reply
link on #
驱动开发都是用vim
Reply
liuhao on #
vim 不强大,vim很弱小。vim能干的事情很少。vim只会编辑,而且是纯键盘流,有很多不便,相当的不直观。vim只把编辑这件事干的还不错。要干其他的事情,需要跟别人合作。之所以,许多人喜欢vim的原因,应该是,虽然他做的还不好,他能干的事不多,但是他在努力的做好自己的事。不像一些,想做很多事,但是一件也没做好。如果说vim不完美,的确是,但是在编辑领域,他应该是最接近的。
Reply
我握我 on #
vim就像一个坑,掉进去的时候在下面玩地牛开心,等到爬出来以后,就不想再掉进去了
Reply
abbr on #
楼主是用什么输入法啊,我用QQ输入法,如果在QQ输入法英文输入状态,vim在ex模式时,输入的命令显示不出来,切换成英文输入法就正常了。遇到过这样的情况吗?
Reply
Dante on #
是mac还是win?win下应该正常吧?
Reply
abbr on #
是win7,64位的,后来发现只是第一次显示不出来,输入两次就出来了。比如在半角英文状态下输入“:x"退出,可以完成命令,只是那个x显示不出来。输入两个xx就可以了
Reply
Ava1oN 龙龙 on #
收藏学习了~~
Reply
hilojack on #
博主在mac 下是怎么解决vim从insert 到 normal 时自动中英文切换的问题?原来我用linux 时,利用的是InsertLeave + fcitx 的api。后来使用mac 后,用百度五笔,可惜百度五笔没有提供api, 无法自动切换英文。后来我用鼠须管输入法,可以在macvim 作 insertLeave时,自动切到英文。但是terminal 下的vim 还是不行。
Reply
Dante on #
终端下的vim是应该是改不了的,这个和你用的终端还有关系。最后我是养成了切换模式时,手会自动去切换一下输入法。。
Reply
歪妖内涵网 on #
悄悄的路过。
Reply
黄瓜大王 on #
至今不知道怎么用命令编译java的win程序员路过。
仅支持语法高亮不支持语法检测实在难受。输入的快意味着更多的错误。可能只是我不懂,但是我并没有找到让VIM告诉我语法错误的办法,哪怕是检测每句话后面有没有分号似乎都要去找插件。
编辑方式很好,但只是一个编辑器。
Reply
iPixelOldC on #
...我只想说。。。一个东西如果是你自己专为你一个人做的,你会用的不舒服?为什么非要从众呢,IDE给出的大众化解决方案怎么可能有定制方案好2333不过呢。。。如果水平太菜的话。。。定制没大众肯定好= =不过那确实没办法。。。你菜嘛2333【个人观点,VIM会用但不常用,因为我现在主要用vscode+vim mode在windows平台下。。。我一般只在终端环境下用vim,桌面还是用其他的。。。】
Reply
抬头看见柠檬树 on #
为何您的这篇文章里好多链接都是404啊qwq
Reply
陶炜 on #
博主你好,冒昧问一个问题啊:我的vim光标在普通模式下不会把下面的文字显示出来,有什么办法能显示出来呢?(我希望的是下面的字反色显示)
Reply
Dante on #
配色方案的问题,换个配色试试。
或者直接自己修改一下:h Cursor
Reply