请问大家有啥好的 vim 改键意见 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zeonll
V2EX    程序员

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

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

    使用 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
    vaas
        10
    vaas  
       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     Solana     1019 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 18:40 PVG 02:40 LAX 11:40 JFK 14:40
    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