gpt4 book ai didi

vim - 你在 vim 和 emacs 中的想法/写法有什么不同吗?

转载 作者:行者123 更新时间:2023-12-04 04:27:33 26 4
gpt4 key购买 nike

在我编写的许多脚本中,我经常以“函数式”构造程序。也就是说,我一开始基本上是定义了很多函数,然后再应用这些函数。这会导致一系列嵌套函数调用,我在其中输入:

  • 函数名
  • 它的论点
  • 下一个函数名
  • 它的论点

  • ...等等。

    对于函数被“管道”在一起的情况,一个函数的输出是下一个函数的参数(通常是第一个,但不总是),其输出是下一个函数的参数,并且无穷大。在前缀符号中,如果您从左到右输入此序列,则键移动可能会非常跳跃。例如,您将如何输入以下 [Python] 示例的第二行(~mul~ 是乘法,~truediv~ 是除法)?
    from operator import add, mul, truediv
    print(truediv(mul(add(1,1),2),4))

    如果我必须线性地编写相同的一组操作(从左到右编写,不要跳来跳去),我更有可能使用函数组合的表示法。基于我之前的 Python 示例,我可能会写
    from functional import foldr, compose, partial, flip
    print(foldr(compose,add,(partial(mul,2),partial(flip(truediv),4)))(1,1))

    我认为这是因为我将每个函数与其自己的参数相关联,并且更喜欢连续输入它们,而不是在第一个函数的参数列表完成之前将参数填充到另一个函数(因为需要输入第一个示例从左到右)。

    我注意到这一点是因为我很长时间以来一直是 emacs 用户,并且最近才尝试过 viper/vimpuse 和 vim。在 emacs 中,我可能会做类似的事情
  • [键入函数名称和参数]
  • C-a
  • [键入下一个函数名称]
  • C-e
  • [填写其余参数]
  • C-a
  • [键入下一个函数名称]
  • C-e
  • [填写其余参数]

  • ...等等,如果我搞砸了或忘记了什么,偶尔使用 M-b、M-f、M-DEL(后向词、前向词、后向杀词)。

    我最近发现了 vim 中的 C-o,这是一个救命稻草 - 但我发现等效键是
  • [键入函数名称和参数]
  • C-o 0
  • [键入下一个函数名称]
  • C-o $
  • [填写其余参数]
  • C-o 0
  • [键入下一个函数名称]
  • C-o $
  • [填写其余参数]

  • ……还有其他的;后向词、前向词和后向杀词等价物将是 C-o b 和 C-o w 以及 C-w。

    所以这让我想到要在 vim 中编程,我可能必须增加一个更大的工作内存,这样我就可以在填写另一个函数时暂停一个函数的构造,以此类推。另外,在构建文本文档时,我发现我甚至在完成一个完整的想法之前就非常频繁地编辑(杀死、复制、拉动),这与 vim 的“停留在正常模式,插入时突发文本”的操作风格不太符合模式,然后回到正常模式”,这似乎假设我在尝试插入模式期间能够产生值得编辑的东西。在使用 vim 时,我发现我在输入时会更加慎重,以减少模式之间切换的频率。这是因为我天生痉挛,还是一旦我掌握或提交了适当范围的 vim 键盘命令来增强肌肉内存,我就不会再认为它们如此不同了?

    如果您同时使用 emacs 和 vim 进行编程,您是否发现自己在每个编辑器中以不同的方式思考和构建程序和文本 block ?

    最佳答案

    我从 1992 年的美好时光开始使用 vi,现在我从 2001 年开始使用 Emacs。在编写函数和代码块时,我没有注意到我的想法有任何不同。两个编辑器都有自己的特点和做事方式,但他们的能力还不够强,以至于他们可以改变你的思维方式和编程方式。

    我一直试图找到方法来做我打算做的事情。我不会让我的编辑强制我做我不想要的事情。当我对一段新代码进行过程式编程时,我使用一种称为“一厢情愿”的技术,即 mentioned in Structure and Interpretation of Computer Programs。 :

    您想象自己在一个完美的世界中,拥有您需要的所有程序。您使用所有需要实现但目前只有原型(prototype)的有用函数来编写算法。它类似于自上而下的方法。

    关于vim - 你在 vim 和 emacs 中的想法/写法有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750480/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com