V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zuorn
V2EX  ›  macOS

EmacsVim 高效写作环境 | 像写代码一样优雅的写作

  •  
  •   zuorn · 2020-09-23 18:21:07 +08:00 · 1963 次点击
    这是一个创建于 1554 天前的主题,其中的信息可能已经有所发展或是发生改变。

    image-20200912070945321 -w299

    本质上讲,我们的工作是重复性的。不论是在几个不同的地方做相同的小改动,还是在文档的相似结构间移动,我们都会重复很多操作。凡是可以简化复杂性的方式,都会成倍的节省我们的时间。

    Emacs for macOS

    • Control + a/e:光标移动到行首行尾。几乎等同于 Command (⌘)+ ←/→,但后者需要右手离开打字区。
    • Control + b/f/n/p:左右上下移动光标。
    • Control + o/t : 新插入一行,将插入点后面的置于与插入点前面的字符交换。
    • Control + k/h/d:删除插入点之后整行或整段内容,删除左边字符和删除右边字符。

    具体见下表:

    | 键位 | 功能 | | --------- | -------------------------------------------- | | Control–A | 移至行或段落的开头。 | | Control–E | 移至行或段落的末尾。 | | Control–F | 向前移动一个字符。 | | Control–B | 向后移动一个字符。 | | Control–L | 将光标或所选内容置于可见区域中央。 | | Control–P | 上移一行。 | | Control–N | 下移一行。 | | Control–O | 在插入点后新插入一行。 | | Control–T | 将插入点后面的字符与插入点前面的字符交换。 | | Control-K | 删除插入点与行或段落末尾处之间的文本。 | | Control-H | 删除插入点左边的字符。也可以使用 Delete 键。 | | Control-D | 删除插入点右边的字符。也可以使用 Fn-Delete 。 |

    (参考苹果官网

    需要注意的一点是,以上快捷键只在文稿编辑的时候才起作用,这无可厚非,但我还是希望方向键能在系统的任何地方都可以使用,顺便映射了一下翻页键。

    left_option + hjkl 替换为方向键 u/d 替换为上下翻页

    | 键位 | 功能 | | -------- | ------ | | option+k | 上 | | option+j | 下 | | option+h | 左 | | option+l | 右 | | option+u | 上翻页 | | option+d | 下翻页 |

    Vim Mode Plus

    工作模式

    Vim Mode Plus 主要有两个模式,normal 模式和 visual 模式,其中 normal 模式下可以进行光标移动、删除复制粘贴等大部分操作; visual 模式是自定义选中模式。

    image-20200911204545242

    进入和退出 NORMAL 模式

    • 通过以下方式进入
      • Caps Lock
      • Left-Control + i
    • 通过以下方式退出:
      • i 、a
      • caps lock,
      • esc,
      • control+[,
      • 单击鼠标任意按钮

    NORMAL 模式可用键位说明:

    | 键位 | 功能 | | ---- | ------------------------ | | h | 向左移动光标 | | j | 向下移动光标 | | k | 向上移动光标 | | l | 向右移动光标 | | e | 将光标移动到下一个词尾 | | b | 将光标移动到上一个词开头 |

    | 0 | 将光标移动到行首(在任何选项卡之前) | ^ | 将光标移动到行首(在任何标签之后) | | $ | 将光标移到行尾 | | g,g | 将光标移动到文档的开始 | | G | 将光标移到文档末尾 | | { | 将光标移到段落的开头 | | } | 将光标移到段落末尾 |

    • 注意:这些键位可与 shift,control,option 和 /或 command 配饰使用,例如 在 normal 模式下 Control + h/l 可以左右切换桌面。

    删除组合键:

    | 键位 | 功能 | | --------------- | -------------------------------- | | d,d / y,y / c,c | 删除 /复制 /剪切整行 | | d,e / y,e / c,e | 删除 /复制 /剪切到下一个词尾 | | d,b / ... / ... | 删除 /复制 /剪切到单词的前一个开头 | | ... | 同上,适用于上述所有其他导航键 |

    左右删除:

    | 键位 | 功能 | | ---- | -------- | | x | 向右删除 | | X | 向左删除 |

    | 键位 | 功能 | | --------- | ------------ | | p or P | 粘贴到光标处 | | u | 撤销 | | control+r | 重做 |

    在特定的位置退出正常模式:

    | 键位 | 功能 | | ---- | ---------------------------------- | | i | 在光标处退出 NORMAL 模式 | | I | 在行的开头退出 NORMAL 模式 | | A | 在行尾退出 NORMAL 模式 | | o | 在光标下方的新行上退出 NORMAL 模式 | | O | 在光标上方的新行上退出 NORMAL 模式 |

    VISUAL 模式可用键位说明

    在 NORMAL 模式下,您可以通过 v 切换到 VISUAL 模式

    | 键位 | 功能 | | ---- | ---------------------------------------- | | v | 退出 VISUAL 模式,进入 NORMAL 模式 | | h | 向左选择 | | j | 想下选择 | | ... | 同上,适用于上述所有其他导航键 | | d | 删除 (“剪切”) 选择并进入 NORMAL 模式 | | y | 选中 (“复制”) 所选内容并进入 NORMAL 模式 | | c | (“剪切”) 选择并完全退出 Vim 模式 | | x | 删除选择并进入 NORMAL 模式 |

    Mouse keys (full)

    此模式可以模拟鼠标所有按键操作。可以通过 left_option进入,同时按下left_option + 其他组合键使用。

    键位绑定:

    | 键位 | 功能 | | ---- | ------------------------------------ | | h: | 向左移动光标 | | j: | 向下移动光标 | | k: | 向上移动光标 | | l: | 向右移动光标 | | v: | 鼠标左键 | | b: | 中间键 | | n: | 鼠标右键 | | f: | 快速模式(通过 f + hjkl 快速移动鼠标) | | d: | 慢速模式(通过 d + hjkl 缓慢移动鼠标) | | s: | 滚动模式(按 s + hjkl 滚动) |

    使用我的配置

    1. 下载并安装 karabiner-elements

    2. 备份默认配置

      sudo mv ~/.config/karabiner/ karabiner.bak
      
    3. 下载此配置

      git clone https://github.com/zuorn/EmacsVim ~/.config/karabiner
      
    9 条回复    2020-09-25 13:09:14 +08:00
    eGlhb2Jhb2Jhbw
        1
    eGlhb2Jhb2Jhbw  
       2020-09-23 18:23:18 +08:00
    我艹,我他妈在办公室打开的你的帖子。
    LudwigWS
        2
    LudwigWS  
       2020-09-23 18:50:09 +08:00
    排版乱了
    RyuZheng
        3
    RyuZheng  
       2020-09-23 18:58:17 +08:00 via iPhone
    地铁上打开,吓一跳,突然想起这周自己换了防窥屏了
    MeowOvO
        4
    MeowOvO  
       2020-09-23 19:17:24 +08:00
    我服了这 JB 图
    pastgift
        5
    pastgift  
       2020-09-23 19:35:34 +08:00 via iPhone
    恕我直言,写代码时可一点都不优雅。我只有在点肯德基麦当劳时才会有那么一点从容和优雅
    IgniteWhite
        6
    IgniteWhite  
       2020-09-23 20:07:38 +08:00   ❤️ 1
    赣,我在系里公共区域打开了你的帖子,差评
    IgniteWhite
        7
    IgniteWhite  
       2020-09-23 20:09:23 +08:00
    说起来 emacs 的快捷键和 GNU readline 有重合之处的样子
    ooops
        8
    ooops  
       2020-09-24 21:06:25 +08:00
    鼠标那个我用过,事实证明键盘真代替不了鼠标/触控板。 可能 vimac / shortcut 更合适一点
    zuorn
        9
    zuorn  
    OP
       2020-09-25 13:09:14 +08:00
    @ooops 鼠标那个只是有些 app 需要单击一下,外接键盘用的时候右手就必须得用鼠标点击了,有了这个手就不用离开键盘了。不过这个真的只适合偶尔用一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3557 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:32 · PVG 12:32 · LAX 20:32 · JFK 23:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.