vim 在编辑/插入模式下快速移动光标你们一般怎么弄? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shijingshijing
V2EX    程序员

vim 在编辑/插入模式下快速移动光标你们一般怎么弄?

  •  
  •   shijingshijing 2019-06-23 23:10:04 +08:00 13873 次点击
    这是一个创建于 2303 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我个人是 page up,page down,上下左右方向键直接上的,这个也是 SlayerS BoxeR 当年打星际的手法(暴露年龄)

    想问问有多少人是 Esc 切换到 Normal Mode 下,然后 hjkl 一顿操作的?

    也看见有人改了配置按住 Ctrl 配合 hjkl 来操作,这样感觉不通用。

    或者还有其他方法?

    71 条回复    2019-11-21 12:59:47 +08:00
    billlee
        1
    billlee  
       2019-06-23 23:15:20 +08:00
    我是不用方向键的,手要离开主键盘区,效率太低了。
    shijingshijing
        2
    shijingshijing  
    OP
       2019-06-23 23:16:05 +08:00
    @billlee 是用 Esc 在两种模式之间切来切去么?
    starrycat
        3
    starrycat  
       2019-06-23 23:18:23 +08:00 via Android   2
    m-hjkl,不过很少用到
    PTLin
        4
    PTLin  
       2019-06-23 23:25:32 +08:00
    有时候需要移动一下光标的我一般用 C-o 加 hjkl 什么的,同时设置了个快捷键用来跳转到行尾,还设置了 m-hjkl 但也是很少用。
    vyronlee
        5
    vyronlee  
       2019-06-23 23:29:40 +08:00 via iPhone
    我所有移动操作都是在 Normal 模式下
    KasuganoSoras
        6
    KasuganoSoras  
       2019-06-23 23:31:03 +08:00
    按下 Esc,然后输入
    :set mouse=a
    开始体验鼠标点击移动光标的快乐 √
    KasuganoSoras
        7
    KasuganoSoras  
       2019-06-23 23:33:35 +08:00   1
    当你想要切换回普通编辑模式的时候,只需要
    :set mouse=c
    就行了
    KannaMakino
        8
    KannaMakino  
       2019-06-23 23:37:17 +08:00 via iPhone
    hjkl
    ↑↓←→
    billlee
        9
    billlee  
       2019-06-23 23:43:28 +08:00
    @shijingshijing #2 是啊,写代码的时候也很少会需要翻页移动的啊,一般就是附近几个词、几行之间移动。大范围的移动我一般直接用搜索或 tag 跳转。
    newtype0092
        10
    newtype0092  
       2019-06-23 23:47:04 +08:00
    正常不都是 Esc 出来么?左手点下 Esc 右手 hjkl 衔接很流畅,习惯了后点 Esc 完全不经过大脑,好像系统自动帮你按的一样。
    weixiangzhe
        11
    weixiangzhe  
       2019-06-23 23:49:08 +08:00 via iPhone
    w b f 行内移动
    行首^ 行尾$
    c u 或 c d 翻页之类的
    insert 模式绑定为 emac 的 c npbf
    也有
    ...
    vim 里移动可以学几天吧 还有用 easy motion 之类的,vim 移动是主要功能
    deyilee
        12
    deyilee  
       2019-06-23 23:49:16 +08:00
    设置了按键绑定
    之前在用 gvim 时,双击,,(英文逗号)是光标右移动
    现在用 vscode,就用 alt+hjkl 来控制 insert 模式下的光标上下左右
    deyilee
        13
    deyilee  
       2019-06-23 23:49:44 +08:00
    按 esc 毕竟要切换模式,不是太流畅
    jdhao
        14
    jdhao  
       2019-06-23 23:52:23 +08:00 via Android
    不退出插入模式,大范围移动,不如使用 vscode
    weixiangzhe
        15
    weixiangzhe  
       2019-06-23 23:57:17 +08:00 via iPhone
    esc 主要问题是太远,绑为 ctrl 加 esc 是最合理的
    寄出老键盘图
    https://i.bmp.ovh/imgs/2019/06/c65299aaa4766e35.jpeg

    或者直接按 ctrl [ 和绑定位 jk 也是不错的
    weixiangzhe
        16
    weixiangzhe  
       2019-06-23 23:58:04 +08:00 via iPhone
    pkookp8
        17
    pkookp8  
       2019-06-24 00:16:03 +08:00 via Android
    这时候我就放弃 hjkl 用方向键了
    20015jjw
        18
    20015jjw  
       2019-06-24 00:42:27 +08:00 via Android
    当然按 esc 啊.. vim 就是这么用的..
    esc/ctrl dual role caplocks 学习一下?
    scriptB0y
        19
    scriptB0y  
       2019-06-24 01:27:59 +08:00
    Emacs Mode,Ctrl-a Ctrl-e Ctrl-b Ctrl-f 之类的。
    scriptB0y
        20
    scriptB0y  
       2019-06-24 01:28:48 +08:00
    congeec
        21
    congeec  
       2019-06-24 01:51:44 +08:00 via iPhone
    单行编辑,emacs 更高效。所以我在 vim 里加了 emacs 绑定
    StarryFK
        22
    StarryFK  
       2019-06-24 01:56:00 +08:00 via Android
    用熟了其实也感觉 hjkl 作为方向键很顺手的,甚至有些游戏也是采用 hjkl 作为方向键的
    SingeeKing
        23
    SingeeKing  
    PRO
       2019-06-24 02:11:23 +08:00
    难道不是 WE
    silencefly
        24
    silencefly  
       2019-06-24 02:38:22 +08:00 via iPhone
    把 esc 映射到 kj 手不用离开键盘
    szzhiyang
        25
    szzhiyang  
       2019-06-24 02:45:30 +08:00
    Power Keys 的空格编辑功能

    https://PowerKeys.GitHub.io/space
    szzhiyang
        26
    szzhiyang  
       2019-06-24 02:47:52 +08:00
    等 Power Keys 的空格编辑功能流行起来后,Vim 和 Emacs 就再也不会有新用户了。
    shihira
        27
    shihira  
       2019-06-24 03:41:11 +08:00 via Android
    我会比较 prefer 把上下左右 map 到 alt+kjhl,系统全局
    wweir
        28
    wweir  
       2019-06-24 07:49:55 +08:00 via Android
    同全局 alt+hjkl。而且,自己写配置统一三大桌面下 Vim vscode zsh 的快捷键
    mengzhuo
        29
    mengzhuo  
       2019-06-24 08:17:34 +08:00 via iPhone
    买一块可编程键盘,把 CapsLock + AWSD 换成光标
    darknoll
        30
    darknoll  
       2019-06-24 08:40:40 +08:00
    用箭头的就别用 vim 了吧
    nicevar
        31
    nicevar  
       2019-06-24 08:47:09 +08:00
    数字直接接 hjkl 不是更快
    TrembleBeforeMe
        32
    TrembleBeforeMe  
       2019-06-24 08:57:44 +08:00
    学习 emacs 设置一个修饰键
    HannibaI
        33
    HannibaI  
       2019-06-24 09:17:03 +08:00   1
    vim 按 ctrl + [ 也可以退出编辑模式,再把 caps lock 映射到 ctrl,就可以按 caps lock+[ 退出编辑模式,手基本不需要离开键盘。
    catinsides
        34
    catinsides  
       2019-06-24 09:23:27 +08:00
    按行 C-E C-Y
    按 1/2 C-U C-D
    按页 C-F C-B
    当前行居中 zz

    非要用 hjkl 的话,我一般是 5j5j...
    xiaocaibaozi
        35
    xiaocaibaozi  
       2019-06-24 09:28:51 +08:00 via Android
    我把<Leader>设置成;,把 esc 映射成<Leader><Leader>和;;,然后不管中英文,按两下小指就行了再用 hjkl 移动。
    loading
        36
    loading  
       2019-06-24 09:32:17 +08:00 via Android
    我选择了用鼠标滚轮和方向键
    ahonn
        37
    ahonn  
       2019-06-24 09:43:08 +08:00
    什么,模式难道不是编辑器自己切的么?
    codelegant
        38
    codelegant  
       2019-06-24 09:55:51 +08:00
    我的习惯,将 双击 j 绑定为 ESC,然后 w e b ^ $ 这五个键定位列。行间移动,较大距离就行号 + G,小范转就 j,k。
    poisedflw
        39
    poisedflw  
       2019-06-24 09:57:36 +08:00
    难道不是 Ctrl+C,然后各种移动?
    ech0x
        40
    ech0x  
       2019-06-24 10:43:02 +08:00 via iPhone
    你不习惯切回 normal 模式为什么要用 vim 呢?
    ech0x
        41
    ech0x  
       2019-06-24 10:44:13 +08:00 via iPhone
    @szzhiyang 你这个还要按 0.1 秒,我按一下 esc 键用不了这么长时间。
    ynyounuo
        42
    ynyounuo  
       2019-06-24 10:48:06 +08:00 via iPhone
    真的所谓 vim 「高手」都是摒弃 hljk 的,参考 vimgolf 的大部分高级不作弊的解法。当然实际上并不需要这么苛刻,我装了 hard mode 没两天卸载了。
    cstj0505
        43
    cstj0505  
       2019-06-24 10:54:26 +08:00
    真羡慕你们写代码快的
    除了写文档,写代码时候光逻辑我都得考虑半天,代码之间的移动在整个过程中占比非常非常小
    szzhiyang
        44
    szzhiyang  
       2019-06-24 11:05:08 +08:00
    @ech0x 我写代码时手腕丝毫不动,比你反复按 Esc 键舒服太多了,不服不行。
    hellodudu86
        45
    hellodudu86  
       2019-06-24 11:07:39 +08:00
    ctrl+[
    hjkl+web+easy motion
    MaxTan
        46
    MaxTan  
       2019-06-24 11:15:06 +08:00
    平时多是 normal 模式状态,Casps Lock 绑定 esc 习惯性有事没事都按下,只有编辑的时候按 o、i、a、O、I、A 切插入模式
    光标只用在 normal 模式下移动,小范围内移动 h、j、k、l、e、r、^、$,大范围 ctrl+f、ctrl+b、gg、G、行号 gg
    使用方向键移动光标右手会离开主键盘区的,这样就一点也不 vim 了
    Rorshach
        47
    Rorshach  
       2019-06-24 11:17:36 +08:00
    我用 vim,而且是鼠标大师
    lzhCoooder
        48
    lzhCoooder  
       2019-06-24 11:21:13 +08:00
    Esc 返回 normal 然后 hjkl 的举手
    jon
        49
    jon  
       2019-06-24 14:01:50 +08:00
    浏览器我都用 vim 模式操作
    shawndev
        50
    shawndev  
       2019-06-24 14:19:49 +08:00
    上下可以通过行号跳转,左右暂时无解。其实我觉得 vscode 都已经支持远程编辑了,干嘛还要和自己过不去呢,难道你们都不需要列编辑,不需要格式化的吗。
    70k
        51
    70k  
       2019-06-24 14:35:58 +08:00
    小范围肯定 hjkl
    稍大范围 ctrl+u ctrl+d

    最佳的操作方式是 有自己的命名规范
    搜索关键字然后用 n 跳转到相应位置

    恨不得把全部代码写到一个文件里面 当然还有 buffer 可以用 : )
    neoblackcap
        52
    neoblackcap  
       2019-06-24 15:36:19 +08:00
    我一般都是按 Esc,用 vim 就是不想用那么多组合键。
    MrCard
        53
    MrCard  
       2019-06-24 15:39:49 +08:00
    可以将 esc 改成~键,不然实在太远了
    Akiyu
        54
    Akiyu  
       2019-06-24 15:46:43 +08:00
    小范围:
    还是方向键好使

    大范围:
    C-u C-d

    知道准确的范围;
    n + hjkl (其中 n 是行数)

    邪门歪道 ( 保命):
    设置鼠标支持, 具体 google
    Sparetire
        55
    Sparetire  
       2019-06-24 15:53:48 +08:00 via Android
    esc 映射 jk
    lancelock
        56
    lancelock  
       2019-06-24 16:32:29 +08:00
    60 键盘没有方向键 pageUP pagedown, 用着用着你就习惯模式切换了
    andy2415
        57
    andy2415  
       2019-06-24 17:13:11 +08:00
    空格 + hjkl
    hoyixi
        58
    hoyixi  
       2019-06-24 17:17:42 +08:00
    除了光标移动快捷键

    还有跳到下个词、下个句子、下个标点、下个括号、下个匹配、下个....等等的快捷键, 把“下”换成“上”同理


    这里提到的只是一小部分,想知道更多建议自己去学
    lenvens
        59
    lenvens  
       2019-06-24 17:30:07 +08:00
    hjkl esc 挺顺手的
    james122333
        60
    james122333  
       2019-06-24 17:51:54 +08:00
    基本的就很好用了 善用跳字 不满意还有
    tiedan
        61
    tiedan  
       2019-06-24 17:53:45 +08:00
    别用 ESC 太远了不好按,可以用 ctrl + [
    james122333
        62
    james122333  
       2019-06-24 17:54:51 +08:00
    https://vim.fandom.com/wiki/Using_marks
    https://github.com/easymotion/vim-easymotion
    都可以参考 vim 操作模式是重点 但 vim 简单扩充性也是重点
    不满意自己写 自己掌控编辑器 而不是被编辑器掌控...
    除非你就是想拿现成的...
    james122333
        63
    james122333  
       2019-06-24 18:01:04 +08:00
    vim 就算你只会 shell 也可以扩充
    leky
        64
    leky  
       2019-06-24 18:09:35 +08:00
    inoremap <C-b> <C-o>h
    inoremap <C-f> <C-o>l
    inoremap <M-b> <C-o>b
    inoremap <M-f> <C-o>e
    inoremap <C-a> <C-o>^
    inoremap <C-e> <C-o>$
    inoremap <C-w> <C-g>u<C-w>
    inoremap <C-u> <C-g>u<C-u>
    Sainnhepark
        65
    Sainnhepark  
       2019-06-24 18:16:19 +08:00 via Android
    shift+上下 一次移动五行
    shift+左右 移动到行首行尾
    再来两个插件:
    vim-matchup
    sneak
    darkbill
        66
    darkbill  
       2019-06-24 22:52:54 +08:00
    同 24 楼的 @silencefly +1
    把 esc 映射到 jk 手不用离开键盘
    SmallZheng
        67
    SmallZheng  
       2019-06-25 09:42:13 +08:00
    fd 映射 esc,手都不用移动。
    Samuelcc
        68
    Samuelcc  
       2019-06-25 12:31:20 +08:00 via Android
    不退出插入模式移动不是 vim 的用法吧。。
    vim 的 pattern 就是应该完成一个操作就 esc 的
    这样你撤销 /恢复也是比较符合逻辑的
    lampxiongdi
        69
    lampxiongdi  
       2019-07-01 16:28:36 +08:00
    inoremap jj <ESC>
    diverless
        70
    diverless  
       2019-11-21 00:54:10 +08:00
    @xiaocaibaozi
    我把<Leader>设置成;,把 esc 映射成<Leader><Leader>和;;,然后不管中英文,按两下小指就行了再用 hjkl 移动。
    ---
    我按你的提示设置了,确实很好用:
    -------------
    let maplead = ";"
    inoremap <leader><leader> <ESC>
    inoremap ;; <ESC>
    ------------
    但有一个问题:在中文状态的 insert 模式下,你确实可以切换回 normal 模式。但是,你的中文输入法没办法同时切换回英文呀,所以你这时候是无法使用 hjkl 的,对不?

    除非你已经设置了 smartim 这类在退出 insert 模式同时自动切换回英文的扫插件。
    xiaocaibaozi
        71
    xiaocaibaozi  
       2019-11-21 12:59:47 +08:00 via Android
    @diverless 是我没说清楚。其他平台我没试过,windows 下的话 win7 我是在切到了 normal 模式的时候按一下 shift 把输入法切成英文再 hjkl 一通操作,或者只是单方向移动的话按了数字再按好 hjkl 之一,按好 a 或者 i 再回车。本来想整个插件自动切换中英文输入法,但那时候换用 win10 了,不知道为啥 win10 里 gvim 切成 normal 模式的时候就微软输入法自己就切成英文模式,也就没折腾了。如果没有微软输入法的这个自动切英文功能,确实需要插件帮助。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1071 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:00 PVG 02:00 LAX 11:00 JFK 14:00
    Do have faith in what you're oing.
    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