V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wadezhao
V2EX  ›  程序员

问一件羞耻的事情,你们怎么移动光标?

  •  
  •   wadezhao · 2020-01-19 11:24:01 +08:00 · 23880 次点击
    这是一个创建于 1778 天前的主题,其中的信息可能已经有所发展或是发生改变。
    惭愧的很,当了几十年的程序员,一直有一个疑问:怎么移动光标呢?

    只能用方向键吗?现在很多 IDE 都有自动补全功能,你输入一个左括号,右括号就帮你自动补全了,然后你输入完成之后,还要在右括号后面输入点东西,怎么把光标移动过去呢?

    如果用方向键的话,方向键在右下角,这个手移动的范围太大了,严重影响录入速度。
    我现在会用指点杆来移动光标,所以对小红点键盘严重依赖。我看大家很多人都说大的触摸板比指点杆好用多了,特别是苹果程序员,应该是从来没有用过指点杆吧,那大家都怎么移动光标?用小拇指去够吗?还是就忍了,每次用触摸板或者方向键,大幅度的移动双手?
    第 1 条附言  ·  2020-01-19 16:00:33 +08:00
    补充 1:
    右括号只是个比喻,确实很多 IDE 会自动处理右括号,但是所有的自动处理,都有例外,当你反复修改字符串,引号,括号的时候,有时候就自动处理不了了,肯定要手动移动光标,总之我说的就是需要手动移动光标时的情况。

    补充 2:
    目前看来,比较常见的解决方法,就是 VIM 大法好,和使用插件了。


    很高兴发现很多人原来也有这样的苦恼,我一点都不羞耻啊~~~~
    155 条回复    2020-01-21 18:01:43 +08:00
    1  2  
    misaka19000
        1
    misaka19000  
       2020-01-19 11:25:24 +08:00
    方向键 + 快捷键
    wadezhao
        2
    wadezhao  
    OP
       2020-01-19 11:27:36 +08:00
    就是自己设置快捷键么?
    optional
        3
    optional  
       2020-01-19 11:27:40 +08:00   ❤️ 5
    我写代码的时候往往 90%在思考,10%才用来输入,移动一下手指不耽搁功夫。
    DomonLee
        4
    DomonLee  
       2020-01-19 11:28:57 +08:00   ❤️ 1
    用 Vim 插件
    Xbluer
        5
    Xbluer  
       2020-01-19 11:28:58 +08:00 via iPhone
    安装 vim 插件,然后映射 jj 到<Esc>,然后 jjla 即可
    Juszoe
        6
    Juszoe  
       2020-01-19 11:30:14 +08:00
    右手小拇指按一下方向键,也就移动几个键位的事
    Fx8m
        7
    Fx8m  
       2020-01-19 11:33:07 +08:00
    这个问题也困扰了我很久很久。
    Chry3anthemum
        8
    Chry3anthemum  
       2020-01-19 11:33:46 +08:00
    vim 大法好
    chengjingchao
        9
    chengjingchao  
       2020-01-19 11:34:07 +08:00
    vim 真香
    712e1959
        10
    712e1959  
       2020-01-19 11:34:14 +08:00 via Android   ❤️ 2
    “只能用方向键吗?现在很多 IDE 都有自动补全功能,你输入一个左括号,右括号就帮你自动补全了,然后你输入完成之后,还要在右括号后面输入点东西,怎么把光标移动过去呢?”

    其他的不了解,jetbrains 系的可以 tab 出去。
    chitanda
        11
    chitanda  
       2020-01-19 11:35:03 +08:00
    我同样很困惑。大点的键盘还需要移动整个右手才能触碰到方向键
    jaylee4869
        12
    jaylee4869  
       2020-01-19 11:35:05 +08:00
    vim 的话不用考虑这些问题。
    GUI IDE 配合一下就是 Command + 方向键、ALT + 方向键、Shift + Enter 这些。
    wtsamuel
        13
    wtsamuel  
       2020-01-19 11:37:14 +08:00
    万物皆可 vim,ide 可以 vim,chrome 也可以 vim。拒绝使用鼠标 doge
    hlwjia
        14
    hlwjia  
       2020-01-19 11:38:20 +08:00
    vim 真香
    w292614191
        15
    w292614191  
       2020-01-19 11:39:11 +08:00
    拒绝鼠标的让我想到了之前说 mac 秒杀鼠标的话题。

    哈哈哈哈
    CoCoMcRee
        16
    CoCoMcRee  
       2020-01-19 11:40:05 +08:00   ❤️ 7
    在 mac 上写代码时.

    1.移动到一行头尾就 cmd+方向键.
    2.移动几个单词,option+方向键.
    3.移动几个字母,直接方向键.
    4.超出以上范围的就靠触摸板了....
    BrettD
        17
    BrettD  
       2020-01-19 11:40:06 +08:00 via iPhone
    Vim plugin 走天下
    avalon0624
        18
    avalon0624  
       2020-01-19 11:40:51 +08:00
    我是指点杆
    wadezhao
        19
    wadezhao  
    OP
       2020-01-19 11:42:59 +08:00
    @jaylee4869 问题就是方向键不好按到啊………………
    wadezhao
        20
    wadezhao  
    OP
       2020-01-19 11:44:13 +08:00
    看来大家也没啥好办法。

    其实我想如果 IDE 允许的话,也许把 Ctrl (或 Alt )+J 设成右方向键,Ctrl+F 设成左方向键是比较好的选择。
    IGJacklove
        21
    IGJacklove  
       2020-01-19 11:47:05 +08:00
    方向键,打代码基本不用鼠标吧。。我都是双手键盘。迫不得已才用鼠标
    xfriday
        22
    xfriday  
       2020-01-19 11:47:32 +08:00   ❤️ 3
    再继续按)或]或}就行了,不会重复的
    NastyAir
        23
    NastyAir  
       2020-01-19 11:48:07 +08:00
    把鼠标放在空格键下面,横向使用鼠标。
    [keyboard]
    (mouse)
    DeltaC
        24
    DeltaC  
       2020-01-19 11:51:11 +08:00
    尝试一下 Capslock+ , `Cap+ ; `即可 ,不需要手大范围移动.
    Mogamigawa
        25
    Mogamigawa  
       2020-01-19 11:53:30 +08:00   ❤️ 2
    Home, End

    ctrl + 方向键左和右, 跳过整个单词.
    CYKun
        26
    CYKun  
       2020-01-19 11:58:38 +08:00 via Android
    filco minila 你值得拥有
    fanhaipeng0403
        27
    fanhaipeng0403  
       2020-01-19 11:58:46 +08:00
    vim
    nosay
        28
    nosay  
       2020-01-19 11:59:45 +08:00
    别问,问就 macOS + hhkb > ctrl + e
    pisc
        29
    pisc  
       2020-01-19 12:01:37 +08:00 via Android
    最好的方法:该改盘映射,这有很多方案,比如将 capslock 键设为新修饰键,然后将 capslock+hjkl 映射为左下上右。或者用 spaceFn 的方式,把 space+hjkl 映射为方向键,space 单击还是 space
    maokabc
        30
    maokabc  
       2020-01-19 12:01:56 +08:00 via Android
    同时小红点加 vim 模式
    Kirscheis
        31
    Kirscheis  
       2020-01-19 12:04:24 +08:00 via Android   ❤️ 1
    大部分编辑器在光标右侧是 ) 的时候按 ) 并不会插入 ),而是向右移动
    phoulx
        32
    phoulx  
       2020-01-19 12:04:56 +08:00 via Android   ❤️ 1
    emacs: Ctrl+f/b/p/n 分別移动前後上下( macOS 原生支持
    xiaochun41
        33
    xiaochun41  
       2020-01-19 12:07:42 +08:00
    终极方案就是 vim 大法,虽然可能需要一些时间适应。
    如果 ide 用不了 vim,就装 vim 插件用起来。

    基本观点是:能用键盘绝对不用鼠标,让所有的操作都在 10 个手指能触及的范围之内。
    Orenoid
        34
    Orenoid  
       2020-01-19 12:16:07 +08:00 via Android
    60%键盘
    HolmLoh
        35
    HolmLoh  
       2020-01-19 12:16:41 +08:00
    挑把键盘吧,我之前就是因为方向键在左下角,每次移动光标总是需要把手移过去,现在已经不用 104 和常规 87 的了
    wysnylc
        36
    wysnylc  
       2020-01-19 12:17:51 +08:00
    @optional #3 +1
    wamson
        37
    wamson  
       2020-01-19 12:18:35 +08:00 via iPhone
    在 ide 里装个 vim 插件就好了。
    hstdt
        38
    hstdt  
       2020-01-19 12:21:13 +08:00 via iPhone
    一个方案,鼠标纵向滚轮绑定上下,横向滚轮绑定左右。手就能不离开鼠标按方向了。就是 page up/down 没了。或者其他可编程鼠标。


    以上建议来自一个日常用触摸板的,如有问题,概不负责😃
    xiangyuecn
        39
    xiangyuecn  
       2020-01-19 12:21:42 +08:00
    关闭 IDE、输入法符号的成对补全,就没有这种恼人的问题,括号什么的自己手撸想怎么敲就怎么敲,爽的很,才不管语法
    hstdt
        40
    hstdt  
       2020-01-19 12:24:47 +08:00 via iPhone
    @hstdt 看了下我的表述有点问题,目的是想把鼠标变成一个快捷光标控制器。
    Vegetable
        41
    Vegetable  
       2020-01-19 12:25:29 +08:00
    为了将方向键控制移动到字母区而放弃小键盘甚至方向键本身是非常蠢的,推荐键盘的可以省省了
    mangoDB
        42
    mangoDB  
       2020-01-19 12:26:12 +08:00
    VIM 键位`h j k l`(←↓↑→)
    auroraccc
        43
    auroraccc  
       2020-01-19 12:30:36 +08:00   ❤️ 1
    vscode 有 tabout 的扩展,光标在括号里的时候按 tab 直接到括号后
    guanhui07
        44
    guanhui07  
       2020-01-19 12:31:32 +08:00
    vim
    sven5566
        45
    sven5566  
       2020-01-19 12:35:52 +08:00
    自己写个 Auto Hot key 的脚本,可以映射。
    zhuangzhuang1988
        46
    zhuangzhuang1988  
       2020-01-19 12:36:16 +08:00
    鼠标点点.
    dubenshu
        47
    dubenshu  
       2020-01-19 12:44:08 +08:00 via iPhone
    在 vscode 里的话,可以直接按右括号。会自动判断的
    ma836323493
        48
    ma836323493  
       2020-01-19 12:51:15 +08:00 via Android
    end 或者 alt b
    xloger
        49
    xloger  
       2020-01-19 12:52:14 +08:00
    Capslock+ +1
    你可以去看看它的介绍,应该通过按着 Capslock,然后按 UHJK 之类的就可以移动了,我以前用过一段时间体感还不错
    inhzus
        50
    inhzus  
       2020-01-19 12:54:41 +08:00 via Android
    jetbrains ide 的话,我的办法是绑定 ctrl+hjkl 移动光标,比方向键舒服一点
    Tumblr
        51
    Tumblr  
       2020-01-19 12:57:24 +08:00
    在 PowerShell Console 里:
    1. 按字符移动,直接方向键
    2. 按单词移动,CTRL + 方向键
    3. 行首尾移动,HOME 和 END

    以上是我常用的操作。
    leaflxh
        52
    leaflxh  
       2020-01-19 13:08:57 +08:00
    VS(没有 code) 直接打右括号自动移动光标
    其他则 End 键
    1998qiu
        53
    1998qiu  
       2020-01-19 13:10:55 +08:00 via Android
    还是大专学生,什么活动都没参加,不需要用 ide,用(emacs && vim || 鼠标)就可以“移动光标”了
    nihaoaa
        54
    nihaoaa  
       2020-01-19 13:11:02 +08:00
    @CYKun +1
    blodside
        55
    blodside  
       2020-01-19 13:15:28 +08:00
    行首 ctrl+a
    行尾 ctrl+e
    删除一行 ctrl+k
    上 /下 /左 /右 ctrl + p/n/b/f
    zivyou
        56
    zivyou  
       2020-01-19 13:16:55 +08:00   ❤️ 1
    ctrl + a/e/b/f/n/p
    guog
        57
    guog  
       2020-01-19 13:21:21 +08:00 via Android
    vim 一把梭😂
    whoamiatvip
        58
    whoamiatvip  
       2020-01-19 13:22:57 +08:00
    当然是 vim 插件
    raysmond
        59
    raysmond  
       2020-01-19 13:26:35 +08:00
    楼主当了几十年程序员,这问题应该不成困扰吧?
    haha370104
        60
    haha370104  
       2020-01-19 13:33:33 +08:00
    Mac 的话
    ctrl+a 行首
    ctrl+e 行尾
    ctrl+f/b 前进 /后退
    ctrl+n/p 下一行 /上一行

    实在不行你买个可编程键盘 把大写锁定 fn 一换,直接 fn+wasd 上下左右不香吗
    whoami9894
        61
    whoami9894  
       2020-01-19 13:35:39 +08:00
    Ctrl + hjkl
    lululau
        62
    lululau  
       2020-01-19 13:50:30 +08:00 via iPhone   ❤️ 1
    Emacs Keybinding + ideavim + AceJump
    bunnyblueair
        63
    bunnyblueair  
       2020-01-19 13:52:49 +08:00
    鼠标点啊
    hankai17
        64
    hankai17  
       2020-01-19 13:56:59 +08:00
    vim ESC la
    xiaoxiaoan317
        65
    xiaoxiaoan317  
       2020-01-19 13:59:04 +08:00
    emm 习惯性的 fn+’ 右移 hhkb 重度使用者飘过,有时候也会 ecs shift+a,vim 写了好多年,hhkb 也挺好
    BoomMan
        66
    BoomMan  
       2020-01-19 13:59:18 +08:00
    @712e1959 学到了。真的 nb
    zhujinhe
        67
    zhujinhe  
       2020-01-19 14:02:55 +08:00
    CTRL + e
    back0893
        68
    back0893  
       2020-01-19 14:04:04 +08:00
    鼠标
    sazima
        69
    sazima  
       2020-01-19 14:06:08 +08:00 via iPhone
    esc ctrl+a
    sazima
        70
    sazima  
       2020-01-19 14:06:28 +08:00 via iPhone
    Shift
    ZztGqk
        71
    ZztGqk  
       2020-01-19 14:08:44 +08:00 via iPhone
    如果后面只要补个分号或是花括号的话在 IDEA 里用 cmd + shift + enter 就行了。
    shuangyeying
        72
    shuangyeying  
       2020-01-19 14:09:20 +08:00
    同样怕鼠标手,能不用鼠标就不用。
    JasonSi
        73
    JasonSi  
       2020-01-19 14:11:13 +08:00
    fn+IJKL,用了两三年,无敌
    spongebobsun
        74
    spongebobsun  
       2020-01-19 14:15:20 +08:00
    ctrl + abfepn
    howeroc
        75
    howeroc  
       2020-01-19 14:15:30 +08:00
    vim
    CY4suncheng
        76
    CY4suncheng  
       2020-01-19 14:15:55 +08:00
    @wadezhao 如果只是为了移动光标,那就安装 karabiner-elements,然后安装需要的规则绑定按键,比如 vim 的,emacs 的,https://pqrs.org/osx/karabiner/
    wadezhao
        77
    wadezhao  
    OP
       2020-01-19 14:17:05 +08:00
    @raysmond 这问题困扰了我几十年,我一直用小红点解决~~~所以很羞耻。
    TheWalkingDead
        78
    TheWalkingDead  
       2020-01-19 14:19:22 +08:00   ❤️ 1
    IDEA + vim 插件

    用的最多的:

    移动到文件头:gg

    移动到文件尾:G

    移动到行头:0

    移动到行尾:shift + 4

    上下左右:kjhl

    以单词为粒度的移动:w

    快速定位到一行中某个符号 /字母:f + 符号 /字母 ( n 下一个)

    反正很有很多,请告诉我,什么是方向键?我从来不知道什么是方向键。
    fqxufo
        79
    fqxufo  
       2020-01-19 14:23:24 +08:00 via iPhone
    原来赵部长真的是程序员大佬啊
    ClericPy
        80
    ClericPy  
       2020-01-19 14:33:12 +08:00   ❤️ 1
    这种问题这网站上每隔一段时间就发一次...

    我自己改的快捷键, shift+Enter = End, ctrl+Enter = 换行
    括号其实再打一次)就可以了, 不会多一个的

    vi 模式除了在命令行编辑器, 很少开
    itgoyo
        81
    itgoyo  
       2020-01-19 14:43:17 +08:00
    别看回答了,直接用 Vim 就对了
    oska874
        82
    oska874  
       2020-01-19 14:48:42 +08:00
    vim 大法好
    MrSheng
        83
    MrSheng  
       2020-01-19 14:48:57 +08:00
    @optional 给你满分
    crclz
        84
    crclz  
       2020-01-19 15:00:11 +08:00
    visual studio: 直接敲分号,就会自动在行尾补全分号,很符合直觉的。或者 shift+enter
    twelvechen
        85
    twelvechen  
       2020-01-19 15:00:46 +08:00
    我用的 ikbc pocker, 设置大写锁定+wasd 为方向键。反正大写锁定键对我来说没什么用。
    noobalex
        86
    noobalex  
       2020-01-19 15:02:30 +08:00
    IDEA:
    CTRL + SHIFT + ENTER
    fireSoil
        87
    fireSoil  
       2020-01-19 15:03:15 +08:00
    2 种方式
    1. 买个带编程的键盘 比如 poker 来改键
    2. 使用 Karabiner 软件来改键
    我是把 capslock + jkli 改成方向键,取消了 capslock 的大写功能,当然你可以自定义。
    hgrx
        88
    hgrx  
       2020-01-19 15:07:57 +08:00
    我是直接把 Capslock 键改成了右方向键,反正一般很少有大篇幅输入大写字母的需求,日常使用没有影响
    ipwx
        89
    ipwx  
       2020-01-19 15:09:06 +08:00
    其实吧,很多 IDE,即使有了右括号,你再打一遍右括号,它不会多出一个的,会合并。。。
    irobbin
        90
    irobbin  
       2020-01-19 15:13:09 +08:00   ❤️ 1
    * Ctrl+p shell 中上一个命令,或者 文本中移动到上一行
    * Ctrl+n shell 中下一个命令,或者 文本中移动到下一行
    * Ctrl+r 往后搜索历史命令
    * Ctrl+s 往前搜索历史命令
    * Ctrl+f 光标前移
    * Ctrl+b 光标后退
    * Ctrl+a 到行首
    * Ctrl+e 到行尾
    * Ctrl+d 删除一个字符,删除一个字符,相当于通常的 Delete 键
    * Ctrl+h 退格删除一个ƒ字符,相当于通常的 Backspace 键
    * Ctrl+u 删除到行首
    * Ctrl+k 删除到行尾
    * Ctrl+l 类似 clear 命令效果
    * Ctrl+y 粘贴
    anjiannian
        91
    anjiannian  
       2020-01-19 15:19:43 +08:00
    不是直接输入右括号,光标自动移到右括号后面嘛???
    R4mble
        92
    R4mble  
       2020-01-19 15:31:35 +08:00
    学下 emacs 快捷键, 这是我编程生涯最大的提升了~
    AyanamiRei
        93
    AyanamiRei  
       2020-01-19 15:46:44 +08:00
    可以考虑做一个眼球跟踪
    weixiangzhe
        94
    weixiangzhe  
       2020-01-19 15:50:17 +08:00
    1. 用 vim 模式
    2. 自定义快捷键
    - emacs 类 ctrl+n -> 下 ;ctrl+p -> 上; ctrl+b 左 ;ctrl+f 右
    - super space + 自定义键
    3. 自定义键可以用
    weixiangzhe
        95
    weixiangzhe  
       2020-01-19 15:54:24 +08:00
    linux autokey
    mac Karabiner-Element
    window autohotkey
    4. 支持多层的客制化键盘,如 gh60
    _____
    PS, 一开始撸码就烦方向键,历程 😂

    autohotkey -> gh60 硬件多层 -> [mac] 自带 emacs 键位 /Karabiner-Element --> linux autokey | vim
    tunzao
        96
    tunzao  
       2020-01-19 15:57:13 +08:00
    vim
    aristotll
        97
    aristotll  
       2020-01-19 15:57:24 +08:00
    vim user
    weixiangzhe
        98
    weixiangzhe  
       2020-01-19 16:05:24 +08:00
    记得之前还有记录一下,window 下 autohotkey 用法,其它系统可以按我上面的关键字查一下,不过说真的,还是 vim 好使,啥都可以用 vim,用了 vim 后什么都想用 vim 模式了

    https://aizigao.xyz/2017/03/01/%E4%BD%BF%E7%94%A8AHK%E5%87%8F%E5%B0%91%E9%BC%A0%E6%A0%87%E5%92%8C%E6%96%B9%E5%90%91%E9%94%AE%E7%9A%84%E4%BD%BF%E7%94%A8%E9%A2%91%E7%8E%87-%E9%AB%98%E6%95%88%E7%BC%96%E8%BE%91/
    xieguanglei
        99
    xieguanglei  
       2020-01-19 16:18:10 +08:00
    VSCode 设置快捷键,用得比较多是的:

    移动到行头,移动到行尾,以单词为单位向左移动,以单词为单位向右移动,向左移动一格,向右移动一格。

    本身用的 HHKB,上下左右就是通过 ctrl + 快捷键的方式进行,不存在方向键在键盘右下的困扰。
    wh0syourda66y
        100
    wh0syourda66y  
       2020-01-19 16:20:10 +08:00
    ;; emacs+ spacemacs 基本设置+ 键位部分设置,mac 键盘,我基本不用 2 级的快捷键

    ;; 这部分设置好,各种窗口、上下文切换非常舒服
    (global-set-key (kbd "s-{") 'previous-multiframe-window)
    (global-set-key (kbd "s-}") 'next-multiframe-window)
    (global-set-key (kbd "s-[") 'previous-buffer)
    (global-set-key (kbd "s-]") 'next-buffer)
    (global-set-key (kbd "s-1") 'winum-select-window-1)
    (global-set-key (kbd "s-2") 'winum-select-window-2)
    (global-set-key (kbd "s-3") 'winum-select-window-3)
    (global-set-key (kbd "s-4") 'winum-select-window-4)
    (global-set-key (kbd "s-5") 'winum-select-window-5)
    (global-set-key (kbd "s-6") 'winum-select-window-6)
    (global-set-key (kbd "s-7") 'winum-select-window-7)
    (global-set-key (kbd "s-8") 'winum-select-window-8)
    (global-set-key (kbd "s-9") 'winum-select-window-9)
    (global-set-key (kbd "s-0") 'delete-window)
    (global-set-key (kbd "s-w") 'delete-window)

    ;; 窗口滚动
    (global-set-key (kbd "s-p") 'scroll-down-line)
    (global-set-key (kbd "s-n") 'scroll-up-line)

    ;; 列式操作
    (global-set-key (kbd "s-i") 'string-insert-rectangle)

    ;; projectile 有各种好的命令,选几个好用的做一级快捷键
    (global-set-key (kbd "M-h") 'helm-projectile)
    (global-set-key (kbd "M-j") 'helm-projectile-grep)
    (global-set-key (kbd "s-t") 'eshell)

    ;; 光标移动
    (global-set-key (kbd "s-b") 'backward-word)
    (global-set-key (kbd "s-f") 'forward-word)
    (global-set-key (kbd "C-o") 'spacemacs/helm-find-files)

    ;; 跳转行
    (global-set-key (kbd "C-x l") 'avy-goto-line)

    ;; 返回上一个光标位置
    (global-set-key (kbd "s-m") 'helm-all-mark-rings)
    (global-set-key (kbd "s-M") 'helm-global-mark-ring)
    (global-set-key (kbd "C-c C-g") 'avy-goto-word-1)
    (global-set-key (kbd "s-o") 'neotree)
    (global-set-key (kbd "C-t") 'hs-toggle-hiding)
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.