V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
lwj0012
V2EX  ›  Linux

vim 转 Emacs?

  •  
  •   lwj0012 · 2014-12-10 14:04:17 +08:00 · 5329 次点击
    这是一个创建于 3419 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直都用vim写代码,C C++ Python...

    这两天突然想换个口味,尝试下Emacs。但是试了两天还是没有什么头绪,难道是这两个之间在使用习惯上相差太大了?

    不是按键不适应,只是好像觉得一直以来都习惯于vim的三种模式,并且hjkl包括ctrlp等插件能很快的在view模式下进行浏览,而在emacs下没有这三种模式,一下子觉得很不习惯。

    请问下各位emacser是如何起步的,如果有同学同时拥有vim和emacs使用经验的,不妨分享下。
    31 条回复    2014-12-10 22:03:43 +08:00
    boom11235
        1
    boom11235  
       2014-12-10 14:09:57 +08:00
    你可以在emacs中装个evil插件,立马拥有vim的三种模式..
    xudshen
        2
    xudshen  
       2014-12-10 14:11:18 +08:00
    先熟悉基本快捷键,然后把el-get搞起来,其他找什么就去EmacsWiki
    nicai000
        3
    nicai000  
       2014-12-10 14:16:54 +08:00
    当然相差大, 另外没有需求为什么要转变, 太闲?
    tftk
        4
    tftk  
       2014-12-10 14:24:55 +08:00
    我就看看不说话。
    Muninn
        5
    Muninn  
       2014-12-10 14:33:16 +08:00
    闲...
    lululau
        6
    lululau  
       2014-12-10 14:35:12 +08:00
    Emacs 和 Vim 都用过,不过我是先用的 Emacs,两者最大的不同是 Vim 有多个模式,同一样一个 Key 在不同模式下可以完成不同的功能,而 Emacs 没有像 Vim 的多个模式,因此想要更多的快捷键就只能通过组合键,Vim多个模式虽然有优点,但是缺点也明显,就是要在不同模式间切换,麻烦。

    我现在主要用 Vim,很多快捷盘配置 Emacs 风格了:

    map <c-x><c-c> <ESC>:qa<CR>
    imap <c-x><c-c> <ESC>:qa<CR>
    map <c-x><c-s> <ESC>:w<CR>
    imap <c-x><c-s> <c-o>:w<CR>
    smap <c-x><c-s> <c-o>:w<CR>
    map <c-x><c-k> :bw!<CR>
    imap <c-x><c-k> <ESC>:bw!<CR>
    map <c-x>k <Nul>c<Nul>
    imap <c-x>k <esc><ESC><Nul>c<Nul>
    " map <c-x><c-b> <Nul>a
    " imap <c-x><c-b> <ESC><ESC><Nul>a
    map <c-x><c-b> <ESC>:CommandTBuffer<CR>
    imap <c-x><c-b> <ESC>:CommandTBuffer<CR>
    map <c-x>b <ESC>:CommandTMRU<CR>
    imap <c-x>b <ESC>:CommandTMRU<CR>
    map <c-x><c-f> <ESC>:CommandT<CR>
    imap <c-x><c-f> <ESC>:CommandT<CR>
    cmap <c-p> <up>
    cmap <c-n> <down>
    map <C-h> <C-w><Left>
    imap <c-e> <c-o>A
    imap <c-a> <c-o>^
    imap <c-f> <Right>
    imap <c-b> <Left>
    imap <c-n> <Down>
    imap <c-p> <Up>
    imap <c-d> <Del>
    imap <c-k> <c-o>C
    imap <esc>f <c-o>e
    cmap <esc>f <S-Right>
    imap <esc>b <c-o>b
    cmap <esc>b <S-Left>
    imap <esc>< <c-o>gg<c-o>0
    imap <esc>> <c-o>G<c-o>$
    imap <esc><bs> <esc><esc>caw
    cmap <esc><bs> <c-w>
    RyanKung
        7
    RyanKung  
       2014-12-10 14:39:07 +08:00
    什么时候开始写clojure/lisp/haskell了再转也不迟。
    ffffwh
        8
    ffffwh  
       2014-12-10 14:41:12 +08:00 via Android
    前后转了七7次大概,才转成功。
    lwj0012
        9
    lwj0012  
    OP
       2014-12-10 15:01:58 +08:00
    @boom11235
    @lululau
    @xudshen
    @RyanKung
    @RyanKung
    @ffffwh
    的确是有点闲的蛋疼,仔细想了下觉得没有必要转了,还是用vim吧~
    谢谢~
    caiych
        10
    caiych  
       2014-12-10 15:10:08 +08:00
    ……也有一段时间想转……然后发现跟tmux配置快捷键冲突就算了……
    jason52
        11
    jason52  
       2014-12-10 15:16:30 +08:00
    @lululau 小手指疼怎么解决。我觉得复制黏贴多了小手指都会疼。
    xudshen
        12
    xudshen  
       2014-12-10 15:18:37 +08:00
    @jason52 把Ctrl换到A的左边
    xiaogui
        13
    xiaogui  
       2014-12-10 15:24:01 +08:00
    在用 Atom ~~
    iT2afL0rd
        14
    iT2afL0rd  
       2014-12-10 15:51:27 +08:00
    @jason52 换HHKB
    shellfly
        15
    shellfly  
       2014-12-10 16:17:25 +08:00
    说几个平时Emacs比Vim好用的地方

    分屏,Ctrl+2水平分,Ctrl+3垂直分,也容易自定义成自己喜欢的组合键

    目录管理,dired-mode, 查看目录,创建目录

    查看buffers, ibuffer,同时打开几十文件都是很正常的,我一般都是一屏显示不了文件列表的时候才去关,Vim查看buffer只能跳到对应数字的buffer,多了就不好用了

    自动补全(打卡文件的时候),i-do mode,会在打卡文件的时候帮你补全,不需要想vim那样一下一下tab


    很多高级的文件编辑功能
    比如递归替换目录下所有匹配文件里的某个pattern(find-name-dired ),
    可以把所有.py文件里的 import settings 替换成from django.conf import settings
    ngn999
        16
    ngn999  
       2014-12-10 16:41:27 +08:00
    @caiych 你是配置tmux为emacs模式了? emacs + tmux 目前还没有什么冲突的
    icecoffee
        17
    icecoffee  
       2014-12-10 17:31:04 +08:00
    曾经试过转emacs,发现每天就在查各种快捷键和搞配置了。然后就决定vim将就用下去吧。。。
    lch21
        18
    lch21  
       2014-12-10 17:32:29 +08:00
    emacs 可以在buffer中操作命令行,相当有用
    Hongmin
        19
    Hongmin  
       2014-12-10 17:42:17 +08:00
    emacs自带很完善的新手学习和进阶教程。。。
    jianghu52
        20
    jianghu52  
       2014-12-10 18:26:21 +08:00
    我这种只会用st的人,就出来丢人现眼了
    phoneli
        21
    phoneli  
       2014-12-10 19:34:51 +08:00
    先vim一个月,后emacs一年多,最后还是vim且很满意。
    yangxin0
        22
    yangxin0  
       2014-12-10 20:13:25 +08:00   ❤️ 1
    我用emacs快四年了, 其中经历过各种配置折腾, 现在emacs几乎是裸配置, 只有一个自定义配色,和修改了相关快捷键。 入门的话最好的方式建议真正用emacs来写代码, 写代码的时候不要图快,把结构在脑袋里面想清楚了,在用emacs一个个字母的敲出来。我个人的建议不要去看什么自动补齐这些花哨的功能, 很多人真的是写了又删,删了又写, 或者时间不够直接push了。
    sectic
        23
    sectic  
       2014-12-10 20:14:55 +08:00 via Smartisan T1
    emacs 的 magit 是我用过最舒服的git客户端。
    gno23x
        24
    gno23x  
       2014-12-10 20:40:41 +08:00
    @yangxin0 裸配置?配置有放github吗,想看一下裸配置长啥样的。 :)
    yangxin0
        25
    yangxin0  
       2014-12-10 20:42:44 +08:00
    (menu-bar-mode t)
    (tool-bar-mode -1)
    (scroll-bar-mode -1)
    (setq display-time-24hr-format t)
    (setq kill-ring-max 200)
    (setq inhibit-startup-message t)
    (setq major-mode 'text-mode)
    (show-paren-mode t)
    (setq frame-title-format "%f")
    (setq make-backup-files nil)
    (fset 'yes-or-no-p 'y-or-n-p)
    ;;(global-hl-line-mode 1)
    (setq-default indent-tabs-mode nil)
    ;;(global-font-lock-mode -1)
    ;;(set-background-color "light grey")
    (fringe-mode -1)
    (set-fringe-mode 0)

    (defun nil-fun()
    (interactive))

    ;; key binding
    (define-key esc-map "g" 'goto-line)
    (global-set-key (kbd "C-z") 'undo)
    (global-set-key (kbd "C-x C-z") 'undo)
    (global-set-key (kbd "C-\\") 'nil-fun)
    ;;(global-set-key (kbd "<mouse-3>") 'nil-fun)
    ;;(global-set-key (kbd "<down-mouse-1>") 'nil-fun)
    (setq mac-option-modifier 'super)
    (setq mac-command-modifier 'meta)
    (global-set-key (kbd "C-j") 'newline-and-indent)

    (set-face-attribute 'default nil :font "Consolas 16")
    (dolist (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font
    (frame-parameter nil 'font) charset
    (font-spec :family "Microsoft Yahei" :size 13)))
    TimLang
        26
    TimLang  
       2014-12-10 20:45:16 +08:00 via iPad
    @shellfly 你说的这些vim也基本都有
    duhastmich
        27
    duhastmich  
       2014-12-10 20:52:19 +08:00
    转到emacs后就是magit用不惯,还在用fugitive
    vietor
        28
    vietor  
       2014-12-10 21:02:04 +08:00 via Android
    写lisp会上瘾浪费精力,建议别转
    shellfly
        29
    shellfly  
       2014-12-10 21:16:37 +08:00
    @TimLang 但感觉不怎么好用么
    xiaohanyu
        30
    xiaohanyu  
       2014-12-10 21:48:50 +08:00
    https://github.com/xiaohanyu/oh-my-emacs 世界上最好的 dotemacs 项目。

    有详细的文档,集成 evil ,兼顾 vim 和 emacs
    expkzb
        31
    expkzb  
       2014-12-10 22:03:43 +08:00
    xcode中装vim扩展,insert模式时可以用emacs快捷键,一起用的感觉蛮好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2845 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1031ms · UTC 06:29 · PVG 14:29 · LAX 23:29 · JFK 02:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.