V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zeonll
V2EX  ›  程序员

请问大家有啥好的 vim 改键意见

  •  
  •   zeonll · 2023-04-11 14:30:16 +08:00 · 2973 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 mac 的笔记本键盘,每次要切换模式时,都要张大左手,逆角度去按 esc 键

    请问大家有这个烦恼吗? 改成哪个键 /组合键会方便点? 除了 esc 之外还改过其他键吗?

    33 条回复    2023-04-18 01:03:36 +08:00
    ruidoBlanco
        1
    ruidoBlanco  
       2023-04-11 14:42:30 +08:00
    CAPSlock 当 escape 使,太多人这么用了。
    bjzhush
        2
    bjzhush  
       2023-04-11 14:47:02 +08:00   ❤️ 1
    这种几百万人讨论过的问题就不要问了,多用 Google
    Google:vim esc alternative
    juggtt213
        3
    juggtt213  
       2023-04-11 14:52:04 +08:00 via iPhone
    把 capslock 这个风水宝地让出来就可以了,工具可以用 karabiner

    之前看到过一个项目还包含一些组合键方案
    https://github.com/Vonng/Capslock
    DigitalG
        4
    DigitalG  
       2023-04-11 14:53:34 +08:00
    https://github.com/nvim-zh/better-escape.vim
    也可以试试组合键(比如 jj 跳出)
    uion
        5
    uion  
       2023-04-11 14:53:43 +08:00   ❤️ 1
    vim.keymap.set("i", "jj", "<Esc>", vim.keybinds.opts)
    vim.keymap.set("i", "jk", "<Esc>", vim.keybinds.opts)
    roundRobin
        6
    roundRobin  
       2023-04-11 14:54:04 +08:00
    karabiner 长按 caps -> ctrl, 敲击 caps -> esc
    jun771480011
        7
    jun771480011  
       2023-04-11 15:03:38 +08:00
    Yukiteru
        8
    Yukiteru  
       2023-04-11 15:04:43 +08:00 via Android
    不是可以 command+c 跳出吗?
    ProbeWong
        9
    ProbeWong  
       2023-04-11 15:15:36 +08:00
    capslock 改成 command ,用 command + [ 回到 normal mode
    dustynight
        10
    dustynight  
       2023-04-11 15:27:28 +08:00 via Android
    在用 40%键盘之前,我会互换 capslock 和 ctrl 的位置,然后用 ctrl +[返回 normal
    用 40%键盘之后,正常键盘 tabs 的位置就是我的 ESC ,按起来很方便,就不再需要用组合键了。
    zeonll
        11
    zeonll  
    OP
       2023-04-11 15:28:44 +08:00
    @ruidoBlanco capslock 是 mac 上默认的输入法切换,改了之后怎么进行大小写切换啊
    julypanda
        12
    julypanda  
       2023-04-11 15:29:25 +08:00
    可以 ^C
    上周刚遇到 esc 无法退出编辑模式的问题
    一开始以为 esc 键坏了
    后来发现 是被 siri 占掉了
    huajieyu
        13
    huajieyu  
       2023-04-11 15:37:04 +08:00
    我 capslock 没有改成 esc 而是映射为 left-ctrl, left-ctrl 映射成了 capslock ,这个是通过 Karabiner-elements 改的,
    Karabiner-elements complex Modifications 增加 left ctrl + hjkl to arrow keys vim
    最后 vim 设置 jj 映射为了 esc 和 @xyxalexc 一样
    70k
        14
    70k  
       2023-04-11 16:29:03 +08:00
    改建的核心是手指手掌不用大范围大角度移动就能控制所有的键
    首先必须要禁用 up down left right 哈哈
    CAPSlock 改成 ctrl 是对左手小拇指帮助非常大的
    leader key 改成 , 也有人喜欢改成 g 更科学吧
    还可以把可以吧 esc 改成 ~ 典型的 hhkb 布局 如果你不用 f1f2f3 的话
    比如我的 buffer 就是 leader 1 leader2
    leader9 leader0 就是 bnext bprev
    格式化代码 leader f
    运行当前文件 leader r

    觉得很多人都没 get 到 vim 使用的精髓
    当然还要配合 tmux 我基本用的默认键位
    shinonome
        15
    shinonome  
       2023-04-11 17:00:00 +08:00
    @zeonll 用 shift 呗,很少会有输入全大写的场景吧
    jheroy
        16
    jheroy  
       2023-04-11 17:04:50 +08:00
    首先 Capslock 改成 ctrl, 然后用 karabiner 设置 ctrl 单独按下为 esc , 组合按键还是为 ctrl
    DrakeXiang
        17
    DrakeXiang  
       2023-04-12 00:34:09 +08:00
    我是用 ctrl+[ 尽量用原生键位
    james122333
        18
    james122333  
       2023-04-12 01:04:55 +08:00
    这问题在某个"你要开源分享但自己讲的模糊也没分享什么只是显得高大上"的社群遇到过
    基本上可以 caps 是 esc 组合键为 ctrl
    至于大小写就不是问题 以下脚本可以解决 没在那发过

    let g:uppercase_insert = 0

    function ToggleUppercaseInsert()
    if g:uppercase_insert == 0
    let g:uppercase_insert = 1
    for l:i in range(97, 122)
    let l:c = nr2char(l:i)
    exec "imap " . l:c . " " . toupper(l:c)
    endfor
    else
    let g:uppercase_insert = 0
    for l:i in range(97, 122)
    let l:c = nr2char(l:i)
    exec "iunmap " . l:c
    endfor
    endif
    endfunction

    imap <C-u> <Esc>:call ToggleUppercaseInsert()<CR>a

    插入模式下按 ctrl+u 切换大小写输出 caps 组合键是 ctrl
    z1645444
        19
    z1645444  
       2023-04-12 09:43:42 +08:00
    ctrl + [ 和 ctrl + c 都是 vim 内置的来到 normal mode 的快捷键,我个人认为 ctrl + c 就挺不错了,毕竟 op 也是用的 mac ,command + c 才是复制,并不存在冲突
    diagnostics
        20
    diagnostics  
       2023-04-13 08:41:57 +08:00 via iPhone
    用 vim 连 ESC 模拟的是 control + C 都不知道吗?还这么多人让 改 Caps ,半桶水真的误人子弟
    james122333
        21
    james122333  
       2023-04-15 18:11:49 +08:00
    @diagnostics

    这两个是不同的不用混在一起谈
    esc 就是 esc
    interrupt 就是 interrupt
    只是 vi 类的劫持了 interrupt 而已
    半桶水在说你自己吗?
    diagnostics
        22
    diagnostics  
       2023-04-15 20:35:28 +08:00
    @james122333 #21 写错了,ESC 模拟的是 CTRL + [,OS 里没有定义 ESC 这个东西。

    CTRL + [ 和 CTRL + C 确实不同,前者能退出 INSERT 和 REPLACE ,后者只能退出 INSERT 。

    https://vimhelp.org/insert.txt.html

    如果你不是半桶水,你应该知道我说的是 CTRL + [,而不是 CTRL + C 。更不会把 ESC 加入到你的评论里
    diagnostics
        23
    diagnostics  
       2023-04-15 20:35:47 +08:00
    @diagnostics #20 另外,我没说我是专家。
    diagnostics
        24
    diagnostics  
       2023-04-15 20:43:44 +08:00
    @james122333 #21 你是半桶水,影响我说你了吗?

    你通过证明我是半桶水,能够证明你不是半桶水吗?

    前面都说用 CAPS 替换 ESC ,说明压根不知道 ESC 模拟的是 CTRL + [ ( 维基百科:Esc_key )

    你不懂我说的是啥,你维基百科一下我的结论“ESC 模拟 xx”你也知道我写错了,但你没有,因为你贴个脚本,绕了一大圈去解决这个问题,然后被我嘲风了,所以你试图证明“我”有问题,而没有针对我的结论细究,更反而说明你做事本来就是半吊子。

    如果你不信我的言论,尝试在任何支持 ESC 退出的地方,使用 CTRL + [(例如 youtube 全屏)
    james122333
        25
    james122333  
       2023-04-17 06:45:48 +08:00
    @diagnostics

    你打的就是 ctrl+c 不用硬扯了 我不需要自动脑补你说什么
    你喷人乱喷就不用说那么多 至于半桶水 你说的很肯定 我说的不肯定
    你只是下意识认为别人不懂但没有证据显示如此 而且你这是全图砲 还有 ctrl+[明显并不比单 caps 快捷 这不是别人懂不懂的问题 而是舒适度与习惯的问题 使用频率明显高多了 贴的脚本就是要在这情况下解决输入大小写的方便 你觉得误人子弟是你自己的看法
    james122333
        26
    james122333  
       2023-04-17 07:02:31 +08:00
    @diagnostics

    说细究更扯 你打错字不是解释打错字就算了
    还归咎别人不细究最终作出别人是半桶水的结论
    脑子到底怎么长的 这么跳节奏也不严谨的结论怎么生出来的?
    james122333
        27
    james122333  
       2023-04-17 07:20:38 +08:00
    @diagnostics

    就这样还想得理不饶人? 反覆思考吧大佬 再看了下真的快笑喷
    sulg
        28
    sulg  
       2023-04-17 09:16:33 +08:00
    用了很多年了,连按 kj ,映射到 ecs
    inoremap kj <Esc>
    diagnostics
        29
    diagnostics  
       2023-04-17 10:14:20 +08:00
    @james122333 #27

    - 直视自己错误很难,更别说承认并改进了
    - 我可能有如下错误:
    - 写错 CTRL + [ :你也可以认为我不懂装懂。实际上,我用的更多的也是 ESC 和 CTRL + C
    - 文字攻击性强:你可以说我地图炮,我有我的立场,你觉得我攻击到你了,可以 Blocked me ,or ignore it
    - 我做到了
    - 知道自己写错了,及时改进:我说我不是专家 #23
    - 面对质疑,给出证明:wiki 百科。


    我的立场是:我认为解决一个问题是看到本质,用已有的键位去改( Caps 在 macOS 下是中 /英文切换,换成 CTRL + SPACE 我个人觉得是 Idiot 行为(这和直接用 CAPS 代替 CTRL + [ ,代替,总有 Trade Off )

    每个人都有每个人的习惯,我认为中文编程环境差就是,随便一搜一个问题,出来的都是 CSDN 半吊子回答,压根不在点上。在这个帖子上,我也是这么认为,首先找到问题本质,再给出解决方案,找到最适合自己的。
    fioncat
        30
    fioncat  
       2023-04-17 11:05:26 +08:00
    hhkb 小键盘布局用 vim 真的无压力。
    ESC 按起来跟普通键盘的 TAB 差不多。
    uni
        31
    uni  
       2023-04-17 13:08:30 +08:00
    开 easymotion ,把空格键换成 leader leader s ,按下空格键就可以快速匹配跳转,太爽了
    james122333
        32
    james122333  
       2023-04-18 00:54:01 +08:00
    @diagnostics

    没有兴趣当驼鸟 看到就是看到 除非在忙 也从来没 block 任何人 你的立场不是随意攻击别人的理由 要嘛不攻击纯解释 要嘛缩限攻击对象不是全地图 依照上面我真的觉得你要打十个
    观注这种小且可变的意义不大 键盘都有 n 种 你觉得这小细节很重要那你就继续 个人觉得这不是糟糕的作法 这种作法也不是中文社群才有 这只是个有用的小设置 上升到哲学层次就多了
    james122333
        33
    james122333  
       2023-04-18 01:03:36 +08:00
    @uni

    easymotion 很不错 但普通 motion 也可以
    页->行(区块)->字
    加上 mark
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3100 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.