背景:用过VC/VS/Matlab/iPython Notebook/PyCharm/Sublime/Notepad++/WindIDE/vim等编辑代码的工具,其中VS功能性最强但不适用linux,其他种种感觉还是vim用起来最顺手。
语言:C/C++、Python、JavaScript
vim方面,之前用过 https://github.com/spf13/spf13-vim https://github.com/amix/vimrc 等,但感觉都有点不顺手(?),因为对很多功能都不了解,而且都有没有解决的痛点
实际上我只需要:自动补完、自动记录上次编辑并可以回退、自动indent、拷贝不需要set paste、自动lint、速度快不卡顿 这些功能而已~
问题来了,不管我的这些乱七八糟的需求,有人分享下自己的vim的最佳实践吗?
1
xcv58 2015-01-06 15:07:39 +08:00 via iPhone
可以试试我的 vim.xcv58.com
|
2
chmlai 2015-01-06 15:14:31 +08:00
spf13挺好的.
|
3
tuuuz 2015-01-06 15:24:20 +08:00
前排
|
4
wgwang 2015-01-06 15:27:09 +08:00
https://github.com/wgwang/.vim
我的vim配置, python, go, c, cpp, java, js, json, markdown, restructuredText 等都支持。 经常用的是python,cpp, go, markdown和rst等几个,其他的偶尔用用。 具体使用见readme.md, 文档写的不是很详细, 有问题一起讨论。 ubuntu和mac用过 |
5
chon 2015-01-06 15:27:28 +08:00
直接上手用,需要什么解决什么。
需要自动缩进?加上 需要自动补全?加上 ... |
6
iewgnaw 2015-01-06 15:40:28 +08:00 1
|
7
zhouzm 2015-01-06 15:45:37 +08:00
使用 Vim 就是一个打造自己喜欢或适合自己的 Vim,主要包括 rc 配置,插件和快捷键设置,@chon 说的一点没错,你想要什么功能,自己 google ,然后加上
vim 技巧可以在 Vim Tips Wiki 里搜索: http://vim.wikia.com/wiki/Vim_Tips_Wiki 插件管理,我比较喜欢 Vundle: https://github.com/gmarik/Vundle.vim 或者试试 neobundle: https://github.com/Shougo/neobundle.vim |
8
adieu 2015-01-06 15:56:09 +08:00 2
可以参考下这个问题的第一个回答 http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim 较深对vim的理解。
当理解了作者的设计思路之后,再试用vim就会顺手很多了。插件的话更多的是起到辅助效果,可以参考这两篇帖子: - http://mirnazim.org/writings/vim-plugins-i-use/ - http://www.sontek.net/blog/2011/05/07/turning_vim_into_a_modern_python_ide.html 如果google一下的话会找到更多的参考帖子,就不多列了。 |
9
adieu 2015-01-06 15:58:42 +08:00 1
另外还推荐 https://pragprog.com/book/dnvim/practical-vim 这本书,以及作者的 http://vimcasts.org/ 这个视频教学站
|
10
henices 2015-01-06 16:02:35 +08:00 1
1. 作为一个vim的老用户,我建议如果真的想用好vim,多看看help
在vim中输入 :help 2. 在插件管理方面楼上说的vundle还是很不错的。 3. 不用乱用别人的配置,够用就好,自己多琢磨 4. 推荐几个我相见恨晚的神级插件 Bundle "scrooloose/syntastic" Bundle "Valloric/YouCompleteMe" Bundle "Shougo/unite.vim" Bundle 'Lokaltog/vim-powerline' Bundle 'tpope/vim-fugitive' Bundle "othree/eregex.vim" 最后: https://github.com/henices/dot_vim |
11
KentY 2015-01-06 16:10:18 +08:00 via Android
可以理解基础上借鉴别人的配置,但不要用任何所谓的vim distributions,没好处。
|
12
tsl0922 2015-01-06 16:11:25 +08:00
不折腾,在用 Janus: https://github.com/carlhuda/janus
|
14
miyuki 2015-01-06 16:16:53 +08:00 via Android
那个炒股的……
|
15
felixzhu 2015-01-06 16:17:42 +08:00
自己写,要啥补啥不就行了
|
16
jason52 2015-01-06 16:18:06 +08:00 via Android
不过老看das,那个大叔用的那么熟练,结果却是不怎么用插件
|
17
harryert 2015-01-06 16:24:31 +08:00
|
18
jason52 2015-01-06 16:47:38 +08:00
@henices eregex.vim 转换了vim蛋疼的内置regexp语法,挺不错的。但是 incsearch无效了啊。google了一圈没找到解决方法。
|
20
jason52 2015-01-06 16:52:10 +08:00
https://github.com/othree/eregex.vim/issues/9 看来得等更新了。暂时弄个开关关掉它。
|
21
fullstack0xyz 2015-01-06 16:59:02 +08:00 1
花几个小时把这个看看然后自己配 http://learnvimscriptthehardway.stevelosh.com/
很快的,直接用别人的话总有不顺手的地方,如果基本的配置不懂想改都不会改,很蛋疼的 推荐几个常用的插件 目录树: nerdtree 自动补全: neocomplcache 注释: vim-commentary 多行游标: vim-multiple-cursors 还有emmet |
23
thinker3 2015-01-06 17:16:43 +08:00
{windows ubuntu mac} * {vim gvim} 够折腾的
|
24
zuyf 2015-01-06 17:23:24 +08:00 1
数年后Wu Jie 大神又更新了exvim,文档很全,可扩展性很好,个人认为是Vim社区最佳整体解决方案(特别是对于中国人来说)
http://exvim.github.io/ https://github.com/exvim/main |
25
zuyf 2015-01-06 17:33:14 +08:00
个人对几个好用的Vim插件的总结: http://zuyunfei.com/categories/Vim/
配合exvim提供了基础的工程管理,配置好几个关键功能,日常开发中已经足够了 |
26
coolicer 2015-01-06 18:34:55 +08:00 via iPhone
最近用linux,用回vim,这回要什么加什么,不拿别人配置了。搞了一个主题,基本满足,好看。好像叫solaried,手机懒得找单词
|
27
ayang23 2015-01-06 18:45:24 +08:00
c++/c/python, 一个ycm就解决了,剩下的就是快捷键了
|
28
spacewander 2015-01-06 19:05:56 +08:00 1
自动补完 : 依靠插件,比如YouCompleteMe NeoComplete之类。原生的可以用C-X C-p系列。
自动记录上次编辑并可以回退 : u是undo,C-r是redo,不喜欢可以remap掉。想体验下高级功能可以安装sjl/gundo.vim,然后开启丧心病狂的undo模式: set undolevels=1000 " How many undos set undoreload=10000 " number of lines to save for undo set undofile " keep a persistent backup file set undodir=~/bak/vimundo/ 自动indent : Vim自带支持基本上可以处理。如果Vim不支持,可以安装语言相关插件。另外=可以调整indent 拷贝不需要set paste : 这个是痛点。可以`set pastetoggle=<F5>`来切换paste模式,不过没多大改善。你也可以使用GUI版本的Vim,它提供了特殊的方式来复制/粘贴剪贴板的内容。 自动lint :使用scrooloose/syntastic来提供静态分析。不过只能在打开/保存的时候才会lint。YouCompleteMe提供了针对C/C++的实时lint。 速度快不卡顿 : 少装插件,换更好的装备。 另外推荐 http://learnvimscriptthehardway.onefloweroneworld.com/ |
31
hitsmaxft 2015-01-06 22:29:56 +08:00
http://blog.bhe.me/blog/2014/03/23/introduction-to-vim/ 为数不多的blog之一.
用了这么多年vim, 最后反而越来越少依赖插件, 因为大部分插件的效率很低. |
32
vinceguo 2015-01-06 22:45:33 +08:00
我也是倾向于少折腾的。呵呵,我懒。如上面有人说的,需要什么加什么。
vim用起来更方便还是多熟悉点快捷键吧。 以前用vim写C/C++,就没用过插件。 最近写python,试了下python-mode,觉得不是很爽,砍了。 我的.vimrc文件就是下面这些了。 filetype plugin indent on "set cindent set tabstop=4 set shiftwidth=4 "set softtabstop=4 set expandtab set number set showcmd set showmatch set smartcase set incsearch set autowrite "set foldmethod=syntax set fileencoding=UTF-8 |
33
9hills 2015-01-06 22:51:40 +08:00
VIM配置有两种途径:
1. 从最基本的开始,不要用别人的配置: http://mislav.uniqpath.com/2011/12/vim-revisited/ 2. 用现成的发行版 我的感悟是,不要用太多的功能,简单就好 |
34
Fechin 2015-01-06 22:56:43 +08:00 via iPad
再好的配置也比不上私人订制
前人的经验总结可供参考,直接上成品显然不能解决痛点 |
35
Goooogle 2015-01-06 23:11:18 +08:00 via Android
vim配置可以参考 但不要直接复制
根据自己需要来配置 推荐Learn Vimscript the hard way 我的配置 https://github.com/wu-nerd/dotfile 有些地方没配置好 一直拖到现在 比如说自定义折叠部分 以前别人发的视频 https://www.v2ex.com/t/125999 |
36
KentY 2015-01-07 00:21:55 +08:00 1
@jason52 是的,和PCRE的类似用法语法上有区别,尤其是look-behind, look-ahead等。 但是当你用多了, 练熟了,就掌握了, 当然不是为了掌握而去掌握。这个过程是很值得的,因为很多vim的那些语法有很强的功能,比如:\zs \ze极其常用,还有很常用的\A \a \L \l \U \u 还有vim的look behind 可以支持动态长度, Perl的还不行, (有些PCRE的实现支持\K)
多行匹配的\_. 还有\%[ ]用起来多爽!比如 foo\%[abcd...] 匹配 fooa fooab fooabc fooabcd 还有vim特有的\v \V 用起来多顺,根据情况能省很多escaping。 还有匹配某列\%c 某行\%l 甚至range, 还有匹配光标\%#,这些PCRE是做不了的 还有对数字10进制,8进制,HEX的匹配,\%d \%x \%u \%U 等, 这相对于Pcre来说就简单快捷多了 还有\%^ \%$等等这些是不是也很方便呢? ..... 当然还有很多很多, 这些都要用了才知道. 存在20多年了, 没有人去改变,有它的道理。 |
37
zhimingcc 2015-01-07 00:30:01 +08:00
能讲讲emacs最佳实践吗,个人感觉emacs用起来更顺手,虽然vim是默认安装
|
38
xcv58 2015-01-07 01:01:15 +08:00
@zhimingcc Emacs 可以看 http://ergoemacs.org/emacs/emacs.html 的教程,也可以 clone 别人的 repo 然后自己定制。
最后再学习一下 Elisp 自己写插件。 我现在一般写程序时候都是用 Emacs,临时修改文件用 vim 。 Emacs 用了 evil 操作几乎和 vim 一模一样,但有些特殊的功能需求还是 Emacs 的插件用着方便一些。 最后,厚颜无耻地打下广告: emacs.xcv58.com clone from https://github.com/purcell/emacs.d |
39
NathanInMac 2015-01-07 03:01:43 +08:00
虽然我也坚信适合自己的就是好的,但是 maximum awesome 确实不错https://github.com/square/maximum-awesome
几个快捷键的改动和 tmux 的配置深得我心 |
40
ffffwh 2015-01-07 03:20:24 +08:00
把Ctrl-g映射成Esc
。 。 。 。 。 。 以后换Emacs可以少痛点 |
41
vietor 2015-01-07 08:14:32 +08:00 via Android
Emacs才是终点
|
42
bjzhush 2015-01-07 09:10:05 +08:00
多看别人的配置,写自己的配置
这样用起来才顺手 |
43
calon 2015-01-07 09:59:01 +08:00
对 Vim 搜索的正则表达式不习惯,又不想折腾 magic 模式的,可以试试 escape_search(script_id=5066 )。
|
44
calon 2015-01-07 10:00:59 +08:00
Vim 这种可以高度个性化自定义配置的编辑器很难说有放诸四海皆准的最佳实践吧。
在28楼建议的基础上结合别人的 vimrc 自己摸索吧。 |
45
davansy 2015-01-07 10:33:49 +08:00
@adieu stackoverflow 上的那个回答简直不能再赞!打住就这样说了,你用不惯VIM 说明你根本没有深入理解他! @alexapollo 我再给你推荐几篇文章:
1. http://www.viemu.com/a-why-vi-vim.html 2. http://stevelosh.com/blog/2010/09/coming-home-to-vim/ 3. http://pascalprecht.github.io/2014/03/18/why-i-use-vim/ 4. http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/ 依我使用VIM 的经验来看,VIM 命令实际上 并不难记忆: |
46
davansy 2015-01-07 10:42:54 +08:00
@adieu stackoverflow 上的那个回答简直不能再赞!打住就这样说了,你用不惯VIM 说明你根本没有深入理解他! @alexapollo 我再给你推荐几篇文章:
1. http://www.viemu.com/a-why-vi-vim.html 2. http://stevelosh.com/blog/2010/09/coming-home-to-vim/ 3. http://pascalprecht.github.io/2014/03/18/why-i-use-vim/ 4. http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/ 依我使用VIM 的经验来看,VIM 命令实际上 并不难记忆例如: 1. di( delete inner ( 翻译出来就是: 删除括号里面的内容,但不包括括号,注意是 inner 2. da( delete arround ( 删除括号里面的内容,包括括号 3. ci{ change inner { 改变 大括号里面的内容 等等... 另外 VIM 的方向键为什么用 HJKL 这个几个和表示方向的英文单词缩写 扯不上半毛钱关系 的 字幕 是有历史原因的: Bill Joy 当时造vi 的时候没有方向键啊, 他用的是 ADM-3A 机器,这机器上 HJKL 键就表示的方向键: 可以看看wikipedia 的介绍 http://en.wikipedia.org/wiki/ADM-3A |
47
henices 2015-01-07 11:07:29 +08:00
@jason52 @KentY 这几个选项可以缓解一下这个问题
``` Examples: after: \m \M \V matches 'magic' 'nomagic' $ $ $ \$ matches end-of-line . . \. \. matches any character * * \* \* any number of the previous atom () \(\) \(\) \(\) grouping into an atom | \| \| \| separating alternatives alphabetic character \ \ \ \ literal backslash \. \. . . literal dot \{ { { { literal '{' a a a a literal 'a' ``` {only Vim supports \m, \M, and \V} It is recommended to always keep the 'magic' option at the default setting, which is 'magic'. This avoids portability problems. To make a pattern immune to the 'magic' option being set or not, put "\m" or "\M" at the start of the pattern. |
48
KentY 2015-01-07 16:40:29 +08:00 via iPhone
@henices 其实这些都不是问题。magic 默认设好,随用根据需要现换是vim使用很常见的情况。我2000年第一次不得不用vim,骂的不行,太非人类了。正式开始使用是从2003,2004年,到现在也有10年了。电脑没有vim是没法接受的事。除了java,所有文本编辑全在vim里。上面所谓很多技巧,对于塌下心来,打算学习,接受这个编辑器的新用户,前2月就都掌握了。都是常识性的。vim编辑快在不用想,肌肉反应。
|
49
alexapollo OP @iewgnaw 很棒的工程,收藏了
@adieu 这个SO回答赞暴了 @fullstack0xyz 找时间啃。。。 @zuyf 看起来不错,就是赞少了点。。 @spacewander 给的这个网址竟然是中文的,酷毙了 |
50
ivanlw 2015-07-05 15:54:54 +08:00
|