除了使用方向键 vim insert mode 下如何快速前进一个字符? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ethusdt
0.01D
V2EX    Vim

除了使用方向键 vim insert mode 下如何快速前进一个字符?

  •  
  •   ethusdt 2023-10-13 16:06:22 +08:00 2652 次点击
    这是一个创建于 729 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位 vimer ,你们在 insert mode 输入时候是怎么快速前进一个字符的?

    如果退出 insert mode ,按 A 可以做到,但感觉好麻烦。

    如果是在别的地方,使用 Emacs 的快捷键 ctrl+e 可以到末尾,或者 ctrl+f 前进一个字符都是很方便的。

    第 1 条附言    2023-10-13 16:54:18 +08:00

    还是映射成 Emacs 下的几个快捷键比较方便:

    local map = vim.keymap.set map("i", "<C-f>", "<right>", { desc = "go forward" }) map("i", "<C-b>", "<left>", { desc = "go backward" }) map("i", "<C-n>", "<down>", { desc = "go down a line" }) map("i", "<C-p>", "<up>", { desc = "go up a line" }) 
    23 条回复    2023-11-03 09:26:29 +08:00
    jinzc
        1
    jinzc  
       2023-10-13 16:13:42 +08:00
    你使用 1 个月后,形成手指肌肉记忆,就不会有这个疑问了。
    iSecret
        2
    iSecret  
       2023-10-13 16:15:45 +08:00   1
    退出 insert mode 然后按 w 前进一个单词,按 b 后退一个单词,按 0 到行首,按 $ 到行尾,然后再按 i 或者 a 进入 insert mode 呗。
    Masoud2023
        3
    Masoud2023  
       2023-10-13 16:19:48 +08:00
    imap 绑定一个你觉得舒服的按键
    td width="10" valign="top">
    ethusdt
        4
    ethusdt  
    OP
       2023-10-13 16:20:23 +08:00
    @iSecret 这些我都知道,但感觉退出 insert mode 感觉还是慢了一点,虽然很多人喜欢用 jj 或者 jk 退出 insert mode 。
    alfa
        5
    alfa  
       2023-10-13 16:20:32 +08:00
    如果是 jb 家的,我的设置
    imap <C-p> <Up>
    imap <C-n> <Down>
    imap <C-b> <Left>
    imap <C-f> <Right>
    imap <C-e> <End>
    imap <C-a> <Esc>^i
    imap <C-;> <End>;
    marcong95
        6
    marcong95  
       2023-10-13 16:22:44 +08:00
    直接硬件外挂,自定义键位 CapsLock ( Anne Pro 的 Magic Fn )+WASD (逃)
    Rooger
        7
    Rooger  
       2023-10-13 16:24:27 +08:00   1
    Ctrl+F/B ,如果你这两个快捷键没有使用的情况下

    在 Vim 中添加以下配置
    inoremap <C-F> <left>
    inoremap <C-B> <right>


    Mac 下主流编辑器几乎都是支持 Ctrl+F/B 前进和后退的,Ctrl+P 前一行,Ctrl+N 后一行。

    VS Code 以及 Zed Vim 插件下,插入模式可以直接使用 Ctrl+F/B

    在 Windows 上 xShell 在输入命令上支持 Ctrl+F/B 前进和后退
    chippai
        8
    chippai  
       2023-10-13 16:25:16 +08:00
    我也是 jb idea vim 党
    文本是用的 ctrl + hljk ;然后再改 ctrl + pn ,作为弹窗的上下切换;方便不少
    knightdf
        9
    knightdf  
       2023-10-13 16:27:58 +08:00
    c-o+l
    ethusdt
        10
    ethusdt  
    OP
       2023-10-13 16:33:48 +08:00
    @knightdf 一次性普通模式应该也方便,可能自己不太适应。谢谢举例。
    donatello
        11
    donatello  
       2023-10-13 16:41:22 +08:00
    caps 映射 单独按 esc,和其他按键一起按是 ctrl
    marding
        12
    marding  
       2023-10-13 16:50:31 +08:00
    @FaiChou 我有个方法是把 Capslock 键映射成 Esc 键, 这样子退出 insert mode 就很方便了. 这样子先退出 insert mode 然后按 a, 还算方便吧自己用着
    xloong
        13
    xloong  
       2023-10-13 17:23:01 +08:00
    @donatello #11 请问下是怎么区分的 或者说是用什么工具实现的
    churchill
        14
    churchill  
       2023-10-13 17:31:00 +08:00
    tabout flash 满足我几乎所有的移动需求
    z1645444
        15
    z1645444  
       2023-10-13 17:41:08 +08:00
    我一直是回到 Normal mode 再 a ,Vim 有默认的回到 Normal mode 的组合键,我一直使用的是 <C-c>,另一个是 <C-[>,右手小拇指肌无力所以就早期开始用 Vim 的时候就没准备习惯使用后者
    ixx
        16
    ixx  
       2023-10-13 17:44:18 +08:00
    你需要一个可以自己改键的键盘然后就可以用自定义的 fn+h 向前一个字符了
    yuancoder
        17
    yuancoder  
       2023-10-13 21:19:49 +08:00
    自己映射一下<c-f>
    gca
        18
    gca  
       2023-10-14 00:15:31 +08:00
    ctrl + O, A
    ricebna
        19
    ricebna  
       2023-10-14 09:27:02 +08:00
    我用 Mac, 安装 Karabiner 后, 设定空格模式. 即按住空格后, 自定义各种键组合.

    例如:
    空格 + sdfe = 方向键;
    空格 + jkli = shift + 方向键;
    在编程这件事上, 方向键与 shift+方向键的使用频率, 一个几乎是 100%, 一个是 99%. 很有必要作为最基础最好用的快捷键.

    另外的常用键组合如下:
    空格 + w = page up
    空格 + r = page down
    空格 + a = 移到行首 (Mac 上各种软件, 打字编辑都有效)
    空格 + g = 移到行尾
    空格 + u = Add Selection for Next Occurrence (编程高频)
    空格 + u = Add Selection for Next Occurrence (编程高频)
    空格 + b = preview tab (Mac 上各种软件都遵循这个规范, 如浏览器左边标签页, vscode 左边标签页)
    空格 + n = next tab

    其他根据个人需要自行映射, 如我把切换最常用软件分别映射为:
    空格 + t = Chrome
    空格 + y = Idea
    空格 + o = 微信
    空格 + q = 飞书
    空格 + v = iTerm2

    我觉得 shift + 顶部数字键组合为符号键还是有点麻烦, 所以直接把顶部从最左边的 "`" 到 "+" 再到 "?" 全部映射为空格模式了.
    为什么这样做? 因为如果我们在输入时手掌始终不离开当前键区的话, 效率最高的, 也少很多输入打断.
    如果使用 shift 甚至是 command, 都得离开输入键区, 空格 + 各种键组合可以始终保持手掌键区不变.
    相比之下, 我认为 vim 的模式转换就弱爆了, 我按住空格就是操作模式, 取消空格就是输入模式, 哪有那么麻烦.
    如果真的要输入空格呢? 按一下空格就是真的空格, 担心误触, 不会, 本人已经实践 4 年, 这套模式已验证十分可靠.

    Karabiner 非常强大, 我不知道 Windows 下有没有类似强大工具.
    Karabiner 不仅能做键映射, 还能直接执行命令行, 能判断当前所处软件启用不同策略, 能检测当前硬件是键盘还是笔记本键盘, 还有鼠标相关控制.
    aliezleft
        20
    aliezleft  
       2023-10-14 13:34:30 +08:00   1
    bjzhush
        21
    bjzhush  
       2023-10-14 16:20:35 +08:00
    翻了下我十年前的配置
    " move cursor in insert mode
    inoremap <C-J> <C-O>j
    inoremap <C-K> <C-O>k
    inoremap <C-H> <C-O>h
    inoremap <C-L> <C-O>l
    不止前后字符,hjkl 在 insert mode 都可以按住 ctrl 键使用
    不过我印象中我很少在 insert 模式移动光标,移动的话,习惯了先 esc 返回 normal mode ,各模式干各自的事
    donatello
        22
    donatello  
       2023-10-16 11:51:41 +08:00   1
    @xloong windows 有个开源软件 dual key remap mac karabiner
    iceAD
        23
    iceAD  
       2023-11-03 09:26:29 +08:00
    我是用的 keychron 的键盘,因为支持 via ,直接在 fn1 区的 hjkl 改成了对应的方向键,无缝衔接 vim 的移动,在插入模式下按 fn1+对应方向就行。
    关于     帮助文档    自助推广系统     博客     API     FAQ     Solana     870 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:27 PVG 04:27 LAX 13:27 JFK 16:27
    Do have faith in what you're doing.
    ubao 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