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

vim在文本输入模式怎么向右移动光标?

  •  
  •   Esay · 2012-05-15 09:06:33 +08:00 · 9349 次点击
    这是一个创建于 4365 天前的主题,其中的信息可能已经有所发展或是发生改变。
    vim使用插件可以补全括号,但是变量名写完之后总得按箭头很不爽,默认设置中有没有在输入模式向右移动的快捷键?
    21 条回复    2015-05-28 16:36:37 +08:00
    ugoa
        1
    ugoa  
       2012-05-15 09:45:12 +08:00   ❤️ 3
    输入模式下只能用箭头控制光标, 所以我习惯把这些用Emacs下的快捷键来映射:

    inoremap <C-e> <END>
    inoremap <C-a> <HOME>
    inoremap <C-f> <Right>
    inoremap <C-b> <Left>
    inoremap <M-f> <S-Right>
    inoremap <M-b> <S-Left>
    inoremap <M-n> <Down>
    inoremap <M-p> <Up>

    用control组合键来控制输入模式下的光标移动,这样就不用去按箭头,方便多了。
    Esay
        2
    Esay  
    OP
       2012-05-15 10:57:59 +08:00
    @ugoa 这样结合很符合mac下输入的习惯啊 十分感谢!
    ugoa
        3
    ugoa  
       2012-05-15 11:15:57 +08:00
    @Esay 如果你再把Ctrl键和Cap键的键位互换一下的话,效率会更高的,呵呵,不过这是个人习惯问题。
    Esay
        4
    Esay  
    OP
       2012-07-11 11:24:35 +08:00
    @ugoa 不知道为什么 在MacVim下


    inoremap <M-f> <S-Right>
    inoremap <M-b> <S-Left>
    inoremap <M-n> <Down>
    inoremap <M-p> <Up>

    这四个映射是失效的。

    在命令行输入 :imap

    ant_sz
        5
    ant_sz  
       2012-07-11 11:28:23 +08:00
    @Esay 下meta键很纠结的,貌似是先按一下esc神马的…
    ivenvd
        6
    ivenvd  
       2012-07-11 11:29:38 +08:00
    有些插件可以直接按 TAB 跳转到括号后面输入。
    一般插件则是直接按 )]} 就可以覆盖掉直接写。
    另外插入模式可以按 M-L 后移并进入普通模式。
    mitnk
        7
    mitnk  
       2012-07-11 12:27:57 +08:00
    我是输入 () 后按ESC,再按i 来编辑的,没有感觉太纠结。
    (如果是 {\n}的话,输入后ESC,再按大O进行内容插入)

    当括号里内容很少,或已经构思好的情况下, 先 ( 然后输入内容,再输入 ).
    mitnk
        8
    mitnk  
       2012-07-11 12:33:37 +08:00
    啊,貌似我看错问题了。。。 - -!

    问题是:输入好()里的内容再如何移动到括号右边吗?

    我是先ESC再按A的。
    用vim基本用不到光标键(除了输入search命令时偶尔用到)
    darasion
        9
    darasion  
       2012-07-11 12:39:28 +08:00
    只有自动缩进就好。

    自动补全的功能很可怕,经常引入各种 bug !想都不想的用了一个提示的函数,很多时候看起来像,但不是想要的。找 bug 很麻烦。
    9
        10
    9  
       2012-07-11 13:04:19 +08:00
    Esay
        11
    Esay  
    OP
       2012-07-11 13:22:05 +08:00
    @ant_sz 哦 我的meta键好像是option 按下option再按字母都是特殊符号
    Esay
        12
    Esay  
    OP
       2012-07-11 14:14:41 +08:00
    @mitnk 都是很有用的技巧,谢谢啦
    jerommix
        13
    jerommix  
       2012-07-27 14:52:52 +08:00   ❤️ 1
    auto.vim
    wuhx
        14
    wuhx  
       2012-07-27 19:50:32 +08:00
    这个问题也困扰了我很久,后来换成emacs + evil 模式
    然后ctrl+f

    玩括号必然是paredit了
    lyklykkkkkkk
        15
    lyklykkkkkkk  
       2012-07-28 04:49:33 +08:00
    inoremap <Space><Space> <Right>
    Esay
        16
    Esay  
    OP
       2012-07-28 08:16:13 +08:00
    @wuhx 因为最近用xcode多一点 所以也比较习惯用ctrl+f了 看来我应该试试emacs
    dingstyle
        17
    dingstyle  
       2012-07-28 13:23:11 +08:00
    按照楼主这种情况,应当在插入模式下键去文本,按ESC,然后按A跳到行尾(也就是括号后面),再按i继续插入。
    VIM之所以没有很方便的插入模式下移动光标的方法,是因为不鼓励这种方式——按下ESC回到普通模式,便可以很迅速地定位到文本中任何位置,且手不需要离开home区。我相信这不比C-或M-这类组合键效率更低。
    NemoAlex
        18
    NemoAlex  
       2012-07-28 13:33:05 +08:00
    @9 这东西没有 README 么,怎么看啊
    yache
        19
    yache  
       2012-07-29 14:40:02 +08:00
    收藏了。
    phay
        20
    phay  
       2012-07-29 18:43:48 +08:00
    是因为对于modal-editing的不适应,才会有这种键绑定需求么?那么可能emacs以及其各种图形简化编辑器可能比较负荷lz需求
    wangzhangup
        21
    wangzhangup  
       2015-05-28 16:36:37 +08:00
    @lyklykkkkkkk 这个好用,收藏!Thx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2690 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:51 · PVG 18:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.