V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zeroday
V2EX  ›  问与答

vim 在 inset mode 下删除前一个打错的字符或者进行移动有什么顺手的方式呢?

  •  
  •   zeroday · 2014-08-27 12:33:55 +08:00 · 4457 次点击
    这是一个创建于 3742 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小拇指不灵活,Backspace删除字符不习惯。

    用方向键移动感觉效率不高。
    28 条回复    2014-08-28 18:45:49 +08:00
    hellowangit
        1
    hellowangit  
       2014-08-27 12:53:21 +08:00   ❤️ 1
    设置`jj`快捷键作为快速退出插入模式,`inoremap jj <ESC>`,然后移动删除都是比较方便的
    hit9
        2
    hit9  
       2014-08-27 12:56:23 +08:00
    删除前一个字符, 非要在insert mode下的话,只有backspace了吧

    normal mode下直接按下x就可以的啊。。
    ggarlic
        3
    ggarlic  
       2014-08-27 13:12:39 +08:00   ❤️ 1
    ctrl h
    bcxx
        4
    bcxx  
       2014-08-27 13:14:18 +08:00
    @ggarlic 按 ctrl 好累=,=
    ggarlic
        5
    ggarlic  
       2014-08-27 13:15:46 +08:00
    @bcxx 额,caps lock跟ctrl互换一下会不会好点
    lululau
        6
    lululau  
       2014-08-27 13:33:49 +08:00   ❤️ 1
    我是这么做的:

    imap <c-e> <c-o>A
    imap <c-a> <c-o>^
    imap <c-f> <Right>
    imap <c-b> <Left>
    imap <c-n> <Down>
    imap <c-p> <Up>
    imap <c-d> <Del>
    imap <c-k> <c-o>C
    imap <esc>f <c-o>e
    imap <esc>b <c-o>b
    imap <esc>< <c-o>gg<c-o>0
    imap <esc>> <c-o>G<c-o>$
    gigimaster
        7
    gigimaster  
       2014-08-27 14:37:51 +08:00   ❤️ 1
    顶caps和ctr换一下,然后ctr+h,

    mac系统下,ctr+h同样可以退格,很好用
    chemzqm
        8
    chemzqm  
       2014-08-27 16:38:01 +08:00   ❤️ 1
    ctr+h 命令行下通用
    换hhkb,backspace就在回车上面,很容易按
    如果是两个字符反了(经常发生),<esc>xp即可
    不建议绑定快捷键,因为这样ssh到远程服务器上面不太方便,还需要再加自己的配置
    openroc
        9
    openroc  
       2014-08-27 17:14:05 +08:00   ❤️ 1
    定义<leader>, 然后在insert mode绑定一个顺手的组合,如<leader>b. :)
    KentY
        10
    KentY  
       2014-08-27 17:17:17 +08:00
    ctrl-h 必须呀, 肯定比backspace 省力啊, 手都不动位置。
    lemontv
        11
    lemontv  
       2014-08-27 17:51:22 +08:00 via iPhone   ❤️ 1
    换个顺手的键盘试试
    zeroday
        12
    zeroday  
    OP
       2014-08-27 19:17:23 +08:00
    @hellowangit good tip.但是来回在insert和normal模式下转换也不高效。
    zeroday
        13
    zeroday  
    OP
       2014-08-27 19:19:43 +08:00
    @ggarlic 我的是微软人体工学键盘,换的话更不好按了。
    zeroday
        14
    zeroday  
    OP
       2014-08-27 19:20:16 +08:00
    @gigimaster 小拇指不灵活,按ctrl难受。
    zeroday
        15
    zeroday  
    OP
       2014-08-27 19:21:58 +08:00
    @openroc 这是个好技巧,不用按ctrl。
    zeroday
        16
    zeroday  
    OP
       2014-08-27 19:22:56 +08:00
    @lemontv 真理啊,怎么微软的人体工学这么反我的输入。
    timothyye
        17
    timothyye  
       2014-08-27 21:17:48 +08:00 via Android
    @zeroday 我的ctrl被我换到了caps lock,方便多了。HHKB的ctrl也在那个位置。
    zeroday
        18
    zeroday  
    OP
       2014-08-27 22:22:45 +08:00
    @openroc 我定义的Leader是";"

    imap <Leader>b <del> 出现一个情况是输出分号后,又删掉分号,这样一来就什么删除效果都没有了。
    zeroday
        19
    zeroday  
    OP
       2014-08-27 22:58:09 +08:00
    @timothyye 微软的键盘换ctrl和caps lock,感觉一点都不好用。
    openroc
        20
    openroc  
       2014-08-27 22:58:58 +08:00   ❤️ 1
    @zeroday imap <leader>b <esc>xi

    have fun. :)
    zeroday
        21
    zeroday  
    OP
       2014-08-27 23:10:39 +08:00
    @openroc 我后来改的是`imap <leader>b <backspace>`, 你的方式更cool.

    <leader>你一般定义什么,我定义的是";",感觉有点不习惯吧,
    openroc
        22
    openroc  
       2014-08-27 23:26:16 +08:00
    @zeroday <leader>=, 很方便,可能我习惯了。 :)

    还可以这样玩,

    “ 删除到行首
    imap <leader>b0 <esc>v0di

    ” 删除到行尾
    imap <leader>b$ <esc>v$di

    等等
    zeroday
        23
    zeroday  
    OP
       2014-08-28 00:01:31 +08:00
    @openroc 谢谢分享tips。偷偷地光临 https://github.com/openroc 里找vimrc :)
    wisatbff
        24
    wisatbff  
       2014-08-28 10:59:45 +08:00   ❤️ 1
    还是习惯 backspace ,再说你不用它它多孤单啊><

    删除前一个词倒是习惯 <C-w>
    zeroday
        25
    zeroday  
    OP
       2014-08-28 11:40:08 +08:00
    @wisatbff 我也改成 imap<C-d> <backspace>了。

    还是习惯类似<C-w>的单手操作。
    zeroday
        26
    zeroday  
    OP
       2014-08-28 11:43:41 +08:00
    @openroc <esc>xi有一个bug,在连续删除字符的时候,会出现光标前置的情况。

    比如 我要删掉的是 “abcd"
    第一次 按<esc>xi 删除效果很理想 ,字符成 "abc"
    第二次 按<esc>xi 删除效果却不理想了,字符却成 “ac"

    因为光标移动到了"c"上,也就无法删除”c“字符了。
    openroc
        27
    openroc  
       2014-08-28 15:42:32 +08:00
    @zeroday <esc>xa 可以吗?:)
    zeroday
        28
    zeroday  
    OP
       2014-08-28 18:45:49 +08:00
    @openroc 可以的,不得不说,你思维真好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.