noun-verb modal editing的编辑器Kakoune

http://kakoune.org/why-kakoune/why-kakoune.html

Language server protocol GitHub - danr/libkak: Configure and control Kakoune from python | Hosts a Kakoune Language Server Protocol implementation too for now

evil-mode 有人问能否支持这种 noun-verb 风格 (而不是 verb-operator) Kakoune-style key bindings · Issue #924 · emacs-evil/evil · GitHub

有意思,不过在vi里用v选择后再编辑,不就变成noun-verb风格了么, 比如dib是verb-noun,vibd就是noun-verb。visual-mode下移动光标也很方便。


问句题外的,Kakoune主页的那个展示视频里的操作

Automatically indent symbols, by aligning the cursors of the splitted selections

在vi里是怎么实现的?

如果语言支持的话,还是 gofmt 这种随手打自动格式化比较舒服。

这个只是看着炫酷,实际上对心智挺伤的。

心智挺伤的是因为我们已经被Bill Joy折磨了太久了……

注意到这个编辑器有一段时间了。出厂自带 python 和 clang 补全,这个得好评。对了,还有多光标支持。其它方面真的没有特别出彩的了,至少没有它首页宣传的那么多才多艺。

当然,它把需要 vim/neovim 插件支援才能实现的功能全部内置,这点绝对得好评。免去了新手们折腾的时间。但是,对于老手们吸引力就要大大减弱了。

@MaskRay 主页那个 indent sysmbols 的操作,可以用 vim-align 插件,自由度更高。

https://macplay.coding.me/sv/vim_table.mp4

发现论坛是可以贴视频的,以后贴动图就用这个了 :grin:

首页上那种 align 的例子的看看就好,vim 也有很多这种网骗类的 showcase 的。

我是觉得它的出彩之处在于:

  1. 相比 vi 来说更加一致和容易按到的键绑定(有一部分是默认 visual mode 的功劳)。vi 有不少常用功能放在非常诡异的按键上(比如%),本身又已经映射的很满了,有大量稍有重合的功能占领了很多按键(比如s),很难调整。
  2. keyboard-centric,同时功能上不亚于现代编辑器的多光标支持。
  3. 接受了现代编辑器更 interactive 带来的好处,而不是疯狂鼓吹“一旦你适应了 blahblahblah 你就可以一口气 上五楼 念一长串咒语不费劲”。

本质上来说其实 kakoune 更像是一个 keyboard-centric 的 Sublime Text,设计中彻底抛开了诸如“不是所有的键盘上都有 Escape 键所以blahblah”这类的到了今天已经完全是 bullshit 的因素。

Avada Kedavra!

前两天突然发现H M L是从来不用的,感觉应该很多人都跟我一样,刚刚把%设成了M :beers:


顺带说一句,我C-r "按多了发现他有点难按,想把'也设成default register,这样只要按C-r '就行,但是有点难度,就搁置了。后来突然想到,为什么不只按一个键呢?C-y=>yank不就好了?(用的普通evil不是hybrid,C-y不是yank) (另外外面用C-v,emacs里用C-r,有点错乱,我就都用C-v了,C-v "之类)

我原来s用于evil-snipe,现在打算avy了

  (evil-define-key '(normal motion) global-map "s" 'avy-goto-char-timer)
  (evil-define-key '(visual operator) evil-surround-mode-map "s" 'avy-goto-char-timer)
  (setq avy-timeout-seconds 0.2)

  (evil-snipe-mode -1)

因此看了许久de Bruijn algorithm没有理解……发现背后理论非常精深

难得现在开发编辑器还这么照顾终端的。希望 Emacs 将来也采用 ncurses library,这样终端也能弹出浮动窗口了(不必像像现在 helm/ivy 从底部分割窗口,改变了窗口布局;补全菜单也无须 overlay 模拟了)。自从 Emacs 有了 child frame 之后,我就很担心终端跟 GUI 的差距越来越大。


打算安装来体验一下,结果发现两年前就安装了,我怎么一点印象都没有呢?

└⋊> brew install --HEAD https://raw.githubusercontent.com/mawww/kakoune/master/contrib/kakoune.rb

Updating Homebrew...

Warning: kakoune HEAD is already installed

└⋊> brew info kakoune
kakoune: HEAD
https://github.com/mawww/kakoune
/usr/local/Cellar/kakoune/HEAD (54 files, 2.2MB) *
  Built from source on 2015-07-07 at 10:53:28

Emacs 基本上用的是 ncurses 吧

@riatre 额,难道 Vim 给人的感觉是「非常诡异的按键」,「一长串咒语」嘛?( ̄Д ̄;)

在我看来,Vim 按键绑定还是容易理解的。也就正则表达式能称得上「一长串咒语」?

@twlz0ne 终端跟 GUI 差距大是好事呀。GUI 在功能和交互上明显更高一筹,未来希望在 GUI。

@twlz0ne 试 kakoune 还不如体验下我的 Vim 配置 =՞ェ ՞= GitHub - ashfinal/vimrc-config: re-vim: sensible vim configuration

下面是挺早时候录制的视频,功能上有些删减。不过基本流程是不变的。

https://macplay.coding.me/cool-software/start-using-re-vim-config/

打字好快,用的什么输入法?我的五笔用了几个月,还处在两词一错码的阶段 :face_with_raised_eyebrow:

GIF 可以加速的⋯⋯

1 个赞

@JJPandari 说我?用的是系统自带拼音输入法。我这打字速度也算快?一直觉得自己超慢……

@LdBeth 我贴的动图、视频等,除非特别说明没有用加速,都是正常速度。和站在我背后看到的是一样的。没有特效。

我这是教如何假裝打字快。

失察了,我应该先调查再下结论。

不过我搜了一下 Emacs 源代码并没有发现有引用 <curses.h>, 整个项目包含 ncurses 单词的 .c 文件只有一个,而且看起来跟 ncurse 没太大关系:

6045 #ifdef USE_NCURSES
6046       /* In some versions of ncurses,
6047      tputs crashes if we have not called tgetent.
6048      So call tgetent.  */
6049       { char b[2044]; tgetent (b, "xterm");}
6050 #endif

差距是不可避免的。在视觉呈现上,终端永远只能是「8bit」效果。我只是希望终端在交互上不要落后太多。就怕 GUI 越走越远,一些核心功能开始慢慢的不支持终端,最后被鼠标党窃取了胜利果实,变成了 VSCode / Atom。

Emacs 用了 Termcap,现在这个库基本由 ncurses 提供了。不过 TUI 还是完全自己实现的。

按键并不都很诡异,只有一部分比较奇怪,例子我上面也举过了,几乎都是历史包袱。

咒语不是在形容难记或者长,而是说它在你念完之前不生效,得提前想好,增加 cognitive load。所谓的肌肉记忆这种东西其实只对简单动作比较有效果。