有人分享一下对 vim 的最佳实践吗?

2015-01-06 15:02:50 +08:00
 alexapollo

背景:用过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的最佳实践吗?

15440 次点击
所在节点    Vim
50 条回复
fullstack0xyz
2015-01-06 16:59:02 +08:00
花几个小时把这个看看然后自己配 http://learnvimscriptthehardway.stevelosh.com/

很快的,直接用别人的话总有不顺手的地方,如果基本的配置不懂想改都不会改,很蛋疼的

推荐几个常用的插件
目录树: nerdtree
自动补全: neocomplcache
注释: vim-commentary
多行游标: vim-multiple-cursors
还有emmet
henices
2015-01-06 17:08:44 +08:00
@jason52 这问题我也发现了,不过还好,一般影响不大。
thinker3
2015-01-06 17:16:43 +08:00
{windows ubuntu mac} * {vim gvim} 够折腾的
zuyf
2015-01-06 17:23:24 +08:00
数年后Wu Jie 大神又更新了exvim,文档很全,可扩展性很好,个人认为是Vim社区最佳整体解决方案(特别是对于中国人来说)
http://exvim.github.io/
https://github.com/exvim/main
zuyf
2015-01-06 17:33:14 +08:00
个人对几个好用的Vim插件的总结: http://zuyunfei.com/categories/Vim/
配合exvim提供了基础的工程管理,配置好几个关键功能,日常开发中已经足够了
coolicer
2015-01-06 18:34:55 +08:00
最近用linux,用回vim,这回要什么加什么,不拿别人配置了。搞了一个主题,基本满足,好看。好像叫solaried,手机懒得找单词
ayang23
2015-01-06 18:45:24 +08:00
c++/c/python, 一个ycm就解决了,剩下的就是快捷键了
spacewander
2015-01-06 19:05:56 +08:00
自动补完 : 依靠插件,比如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/
KentY
2015-01-06 20:00:21 +08:00
@jason52 我觉得vim的regex很强,有时比pcre 顺手
jason52
2015-01-06 20:58:38 +08:00
@KentY 非贪婪{-}类似于这样的太不友好了吧,还有很多的转义。
看对照表




hitsmaxft
2015-01-06 22:29:56 +08:00
http://blog.bhe.me/blog/2014/03/23/introduction-to-vim/ 为数不多的blog之一.

用了这么多年vim, 最后反而越来越少依赖插件, 因为大部分插件的效率很低.
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
9hills
2015-01-06 22:51:40 +08:00
VIM配置有两种途径:

1. 从最基本的开始,不要用别人的配置:
http://mislav.uniqpath.com/2011/12/vim-revisited/

2. 用现成的发行版


我的感悟是,不要用太多的功能,简单就好
Fechin
2015-01-06 22:56:43 +08:00
再好的配置也比不上私人订制
前人的经验总结可供参考,直接上成品显然不能解决痛点
Goooogle
2015-01-06 23:11:18 +08:00
vim配置可以参考 但不要直接复制
根据自己需要来配置

推荐Learn Vimscript the hard way

我的配置
https://github.com/wu-nerd/dotfile
有些地方没配置好 一直拖到现在
比如说自定义折叠部分

以前别人发的视频
https://www.v2ex.com/t/125999
KentY
2015-01-07 00:21:55 +08:00
@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多年了, 没有人去改变,有它的道理。
zhimingcc
2015-01-07 00:30:01 +08:00
能讲讲emacs最佳实践吗,个人感觉emacs用起来更顺手,虽然vim是默认安装
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
NathanInMac
2015-01-07 03:01:43 +08:00
虽然我也坚信适合自己的就是好的,但是 maximum awesome 确实不错https://github.com/square/maximum-awesome

几个快捷键的改动和 tmux 的配置深得我心
ffffwh
2015-01-07 03:20:24 +08:00
把Ctrl-g映射成Esc






以后换Emacs可以少痛点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/159678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX