热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Emacs中使用viper+vimpulse时,Vim宏不起作用-Vimmacrosdon'tworkwhenusingviper+vimpulseinEmacs

Anyothertweaksformakingemacsasvim-likeaspossiblewouldbeappreciatedaswell.任何其他调整使emacs

Any other tweaks for making emacs as vim-like as possible would be appreciated as well.

任何其他调整使emacs尽可能像vim一样也将受到赞赏。

Addendum: The main reason I don't just use vim is that I love how emacs lets you open a file in two different frames [ADDED: sorry, this was confusing: I mean separate windows, which emacs calls "frames"]. It's like making a vertical split but I don't have to have one enormous window.

附录:我不仅仅使用vim的主要原因是我喜欢emacs如何让你在两个不同的框架中打开文件[添加:对不起,这很令人困惑:我的意思是单独的窗口,emacs称之为“框架”]。这就像进行垂直分割,但我没有一个巨大的窗口。

9 个解决方案

#1


7  

You could run VIM in client server mode, then you could have two windows connecting to one instance, hence removing the need for Emacs.

您可以在客户端服务器模式下运行VIM,然后您可以将两个窗口连接到一个实例,从而无需使用Emacs。

#2


3  

I don't know how to make Vim macros work, but since you asked for tweaks for making emacs as vim-like as possible, here's a few additions to vimpulse I use everyday:

我不知道如何使Vim宏工作,但是因为你要求调整使emacs尽可能像vim一样,这里是我每天使用的vimpulse的一些补充:

(define-key viper-vi-global-user-map [(delete)] 'delete-char)
(define-key viper-vi-global-user-map "/" 'isearch-forward-regexp)
(define-key viper-vi-global-user-map "?" 'isearch-backward-regexp)
(define-key viper-vi-global-user-map "\C-wh" 'windmove-left)
(define-key viper-vi-global-user-map "\C-wj" 'windmove-down)
(define-key viper-vi-global-user-map "\C-wk" 'windmove-up)
(define-key viper-vi-global-user-map "\C-wl" 'windmove-right)
(define-key viper-vi-global-user-map "\C-wv" '(lambda () (interactive)
                                                (split-window-horizontally)
                                                (other-window 1)
                                                (switch-to-buffer (other-buffer))))

(define-key viper-visual-mode-map "F" 'viper-find-char-backward)
(define-key viper-visual-mode-map "t" 'viper-goto-char-forward)
(define-key viper-visual-mode-map "T" 'viper-goto-char-backward)
(define-key viper-visual-mode-map "e" '(lambda ()
                                         (interactive)
                                         (viper-end-of-word 1)
                                         (viper-forward-char 1)))

(push '("only" (delete-other-windows)) ex-token-alist)
(push '("close" (delete-window)) ex-token-alist)

Of course, learning Emacs is very important too, but Emacs relies on customization to make it behave exactly like you want it to. And the default Vim key bindings are so comfortable that using Viper simply means that Viper does some Emacs customization for you.

当然,学习Emacs也非常重要,但Emacs依靠自定义使其行为与您想要的完全一样。默认的Vim键绑定非常舒适,使用Viper只是意味着Viper为您做了一些Emacs自定义。

As for using Vim instead of Emacs, I love Vim, but I love the interactiveness of the Lisp system that is Emacs. Nothing feels like typing a line of code anywhere in your editor and instantly evaluating it with a single keystroke, changing or inspecting the state of your editor from your editor (including the live documentation) with a single keystroke (C-M-x) while it is running.

至于使用Vim代替Emacs,我喜欢Vim,但我喜欢Lisma系统的互动性,即Emacs。没有什么比在编辑器中的任何地方键入一行代码并立即通过一次击键来评估它,在编辑器中更改或检查编辑器的状态(包括实时文档)以及在运行时使用单击键(C-M-x)。

#3


2  

I don't have any viper or vimpulse tweaks for you, but I do recommend that you try follow-mode.

我没有任何viper或vimpulse调整,但我建议你尝试跟随模式。

Of course I'd also recommend that you start learning Emacs too. I mean, if you're in this far you might as well go through the tutorial and maybe have a look at emacswiki.

当然我也建议你也开始学习Emacs。我的意思是,如果你在这个目前,你可能会通过教程,也许看看emacswiki。

#4


1  

The version of VIM I use support (Window version) support splitting a file into 2 different frames using "Ctrl+W s"...

我使用支持(Window版本)的VIM版本支持使用“Ctrl + W s”将文件分成2个不同的帧...

#5


1  

Vim easily lets you open a file in two different frames:

Vim可以轻松地在两个不同的框架中打开文件:

:split to split it horizontally

:拆分以水平拆分

:vsplit to split it vertically

:vsplit将其垂直拆分

You can split the screen as many times as you want between the same file, different files, or both.

您可以根据需要在同一文件,不同文件或两者之间拆分屏幕。

CTRL-w-w switches frames.

CTRL-W-w切换帧。

:resize +n or :resize -n resizes the current frame.

:resize + n或:resize -n调整当前帧的大小。

#6


1  

Emacs+vimpulse is awesome, but I think its right workflow is to liberally use emacs commands in combination to vim shortcuts. For example, emacs's macro shortcut F3 and F4 is easier than vim's qq and @q . Also emacs commands are accessed through Alt+x, not : commands. Though vimpulse support a few important vim commands, they are there just for compatibility.

Emacs + vimpulse非常棒,但我认为它的正确工作流程是将emacs命令与vim快捷方式结合使用。例如,emacs的宏快捷​​键F3和F4比vim的qq和@q更容易。此外,emacs命令可通过Alt + x访问,而不是:命令。虽然vimpulse支持一些重要的vim命令,但它们只是为了兼容性。

Followings are my vimpulse specific customizations.

以下是我的vimpulse特定自定义。

.emacs

   ; I use C-d to quit emacs and vim
   (vimpulse-global-set-key 'vi-state (kbd "C-d") 'save-buffers-kill-terminal)
   ; use ; instead of :
   (vimpulse-global-set-key 'vi-state (kbd ";") 'viper-ex)
   ; use C-e instead of $. This works for all motion command too! (e.g. d C-e is easier to type than d$)
   (vimpulse-global-set-key 'vi-state (kbd "C-e") 'viper-goto-eol)
   (defun t_save() (interactive)(save-buffer)(viper-change-state-to-vi)) 
   (global-set-key (kbd "\C-s") 't_save) ; save using C-s instead of :w or C-x-s

    (defun command-line-diff (switch)
          (let ((file1 (pop command-line-args-left))
                (file2 (pop command-line-args-left)))
            (ediff file1 file2)))

    ;; Usage: emacs -diff file1 file2 (much better then vimdiff)
    (add-to-list 'command-switch-alist '("-diff" . command-line-diff))

If you like terminal, you can use emacs -nw. In this case, this clipboard add-on is useful. http://www.lingotrek.com/2010/12/integrating-emacs-with-x11-clipboard-in.html

如果您喜欢终端,可以使用emacs -nw。在这种情况下,此剪贴板插件很有用。 http://www.lingotrek.com/2010/12/integrating-emacs-with-x11-clipboard-in.html

.viper

    (setq viper-inhibit-startup-message 't)
    (setq viper-expert-level '3)
    (setq viper-ESC-key "\C-c") ; use C-c instead of ESC. unlike vim, C-c works perfectly with vimpulse.

Almost everything vim does can be as easily done (if not the same way) in emacs+vimpulse but definitely not vice versa!

在emacs + vimpulse中,几乎所有vim都可以轻松完成(如果不是以同样的方式),但绝对不会相反!

p.s. most of the suggestions above are supported by recent vimpulse BY DEFAULT.

附:最近的vimpulse BY DEFAULT支持上述大多数建议。

#7


0  

You could always start vim in a shell buffer and resize it so it filled the whole frame?

你总是可以在shell缓冲区中启动vim并调整它以使其填满整个框架?

#8


0  

If you want VIM functionality, it makes more sense to just install VIM!

如果您想要VIM功能,那么只安装VIM就更有意义了!

#9


0  

I'm not sure if I answer your question, as it is not entirely clear what you are asking (why the macro's are not working, or which tweaks are available for emulating vim in emacs)
so, is this your problem?:

我不确定我是否回答你的问题,因为你要问的是什么(为什么宏不起作用,或者哪些调整可用于在emacs中模拟vim),所以,这是你的问题吗?:

  • One user who uses an ancient emacs-snapshot (from 2005) mentions
    that this mode causes all the keys on his keyboard to stop working unless he deletes the line that reads 'viper--key-maps from the macro my-get-emulation-keymap in this file
  • 一位使用古老emacs-snapshot的用户(从2005年开始)提到这种模式会导致键盘上的所有键停止工作,除非他删除了“viper - 来自宏my-get-emulation的键映射”的行 - 此文件中的keymap

if it is, you can try the stated solution.

如果是,您可以尝试所述的解决方案。

I got this information from the emacs wiki, and it's a known bug.

我从emacs wiki获得了这些信息,这是一个已知的错误。


推荐阅读
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 本文提供了在Windows系统上部署和启动MySQL免安装版本的详细步骤。首先,从MySQL官方网站下载社区版免安装包(https://dev.mysql.com/downloads/mysql/8.0.html),将其解压至指定目录,例如D:\tools\mysql。接着,配置系统环境变量,确保MySQL命令行工具可以在任意路径下使用。此外,还需创建并配置my.ini文件以设置MySQL的基本参数,确保数据库服务能够顺利启动和运行。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 最近,我在CentOS 5服务器上成功部署了GForge 5.7 Community Edition。与Advanced Server版本相比,虽然功能略有简化,但仍然能够满足大多数开源项目管理的需求。为了确保数据安全,我开发了一套全自动备份脚本,该脚本能够定期备份GForge的数据和配置文件,并将其存储在远程服务器上,以防止数据丢失。此外,该脚本还具备错误检测和日志记录功能,便于故障排查和维护。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
author-avatar
mobiledu2502881447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有