EmacsVim 高效写作环境 | 像写代码一样优雅的写作 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zuorn
V2EX    macOS

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

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

    image-20200912070945321 -w299

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

    Emacs for macOS

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

    具体见下表:

    | 键位 | 功能 | | --------- | -------------------------------------------- | | ControlA | 移至行或段落的开头。 | | ControlE | 移至行或段落的末尾。 | | ControlF | 向前移动一个字符。 | | ControlB | 向后移动一个字符。 | | ControlL | 将光标或所选内容置于可见区域中央。 | | ControlP | 上移一行。 | | ControlN | 下移一行。 | | ControlO | 在插入点后新插入一行。 | | ControlT | 将插入点后面的字符与插入点前面的字符交换。 | | 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
    恕我直言,写代码时可一点都不优雅。我只有在点肯德基麦当劳时才会有那么一点从容和优雅
    FurN1
        6
    FurN1  
       2020-09-23 20:07:38 +08:00   1
    赣,我在系里公共区域打开了你的帖子,差评
    FurN1
        7
    FurN1  
       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     Solana     2806 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 12:41 PVG 20:41 LAX 04:41 JFK 07:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86