代码之家  ›  专栏  ›  技术社区  ›  Seth Johnson

VIM:从鼠标过渡到运动

  •  6
  • Seth Johnson  · 技术社区  · 15 年前

    我经常使用macvim(和gvim)。我熟悉并使用了很多基本的动作指令( b ,请 w , $ , 0 , G )但是,对于许多事情,比如选择屏幕上的特定行或跳到另一行中的特定列,我使用鼠标(有时与键盘上的左手配合使用)。它还有助于我的鼠标有一个滚轮和用于更改选项卡的按钮。

    我也需要承认…我用键盘上的箭头键而不是 hjkl .

    我认为,我的速度(和在计算机上的姿势)将得到改善,因为我不必脱离插入模式,也不必双手放在键盘的主要部分。

    是什么说服你放弃了老鼠?在行和列之间快速移动、滚动等最有用的快捷方式是什么?

    这个问题的灵感来自 this recent post

    10 回复  |  直到 6 年前
        1
  •  8
  •   Pik'    8 年前

    我认为我的速度(和姿势 计算机)将得到改进 必须退出插入模式

    不,您必须在键入所需内容后立即退出插入模式。它很快就变成了一种反射,所以你不会真正浪费时间(我有时甚至在完成一个web表单后按Escape…)。正常模式不仅用于移动,还用于执行大多数操作(键入时保存):例如删除或移动文本部分。您还可以使用适当的键进入插入模式: o 开始一行, S 替换线条(同时保持缩进) 移动到行尾, C + motion 替换几个单词或直到给定的字符…所有这些都保存了击键。

    鼠标看起来很快,但实际上并不精确,所以你会浪费时间(除了用键盘来回不断地移动)。VIM有一长串移动命令(请参见 :help usr_03 )掌握后,在大多数情况下都比鼠标快。

    尽可能使用搜索( / , ? , * , # , f , t ……)我个人使用 Ctrl键 +( D , U , f , )很多。也, Ctrl键 +( o , ) `` 在搜索或其他事情之前回到原来的位置是非常有用的。

    H , J , K , L 右手靠近有用的命令吗( ,请 u , o …):我总是用手指抓着它们。箭头迫使你经常移动你的手。

    尝试查看中的一些命令 :help 然后经常使用它们,你就会习惯于你应该使用什么来根据情况移动。没有人用同样的方式使用VIM。

        2
  •  5
  •   Corey D    15 年前

    我在vim中使用的键盘运动越多,就越不想使用鼠标。如果长时间不停地从键盘移动到鼠标,会对我的手腕造成伤害,这对我没有帮助。

    如果你想用vim的方式强迫你做事情,拔下你的鼠标一段时间!你用键盘越多,你就越喜欢它。这对我有用。

    为了在两行之间移动,我通常只使用 jk 但是我经常用 :line_num .进入一行中的特定列,我通常使用 wbe^0$ 把修改器放在 w , b e 如果我跳过几个词。还有一些转换版本, WBE 它也经常派上用场。

        3
  •  3
  •   Steven    15 年前

    我不得不承认,我经常使用箭头键在VIM中进行特定的移动。 我很少使用hjkl。但是,我发现我的大部分导航都是使用其他命令完成的,比如w(向前跳过一个单词),b(向后跳过一个单词)。将其与3W(向前3个字)等修饰符组合在一起。:跳到特定行。

    我从来没有真的要放弃老鼠,因为我从来没有真正开始。我所能说的是,尝试使用编辑器而不使用Vim所拥有的所有键盘快捷键会让人感到非常痛苦。

        4
  •  3
  •   Benjamin Oakes    15 年前

    我会跑的 vimtutor 从命令行(OS X中的terminal.app)。它运行 vim 使用教程文档。那个文件真正让我认识到了一些命令的威力。你会得到一些对你最有用的东西,并随着时间的推移获得更多。最终你会发现自己越来越少地使用鼠标。

        5
  •  3
  •   Ton van den Heuvel    14 年前

    一个能真正提高你移动速度的指令是 f . F 另外,一个字符将跳到当前行中该字符的第一个出现处。紧迫的 ; 将跳到下一个事件。当然,这可以与其他命令结合使用。例如,通过按来删除第一个右括号之前(包括第一个右括号)的所有字符 D + F + ) .

        6
  •  1
  •   michael    15 年前

    在HJKL,你可以认真地围绕JK生活。

    nnoremap <c-k> ddkP "move current line up one
    nnoremap <c-j> ddp "move current line down one
    vnoremap <c-j> dp'[V'] "move visual block down one
    vnoremap <c-k> dkP'[V'] "move visual block up one
    
    "These may be a bit more esoteric to me"
    inoremap jj <esc>o "Insert mode can move to next line (works mid line)
    inoremap kk <esc>O "Insert mode new line on previous line 
    

    也适用于桌面GUI(ION3和GNOME)

    J -下一个窗口

    K -PREV窗口

    (这个节拍 中高音 选项卡 如果你整天在Vim中编辑)

    还可以阅读:他使用J和K来上下滚动整个motion.txt。

        7
  •  0
  •   mouviciel    15 年前

    我学会了 vi 所以对我来说,鼠标从来没有和文本编辑器一起使用过。

    我不使用 hjkl 除非机器/网络/键盘/两者之间的任何设备配置不当。

        8
  •  0
  •   Daren Thomas    15 年前

    在有意义的地方使用鼠标。它经常这样做(复制/粘贴到其他GUI应用程序或从其他GUI应用程序复制/粘贴)。

    不过,要回答您的问题:一旦您开始使用VIM作为用宏转换文本位的工具,所有的移动都将开始到位;)

        9
  •  0
  •   hora    15 年前

    我想你想知道在插入模式下是否有快速移动的方法(不使用鼠标或箭头键),但不幸的是没有,你必须退出插入模式。但我知道,一路跳到你的 ESC 钥匙真的很烦人,这就是为什么我养成了逃避的习惯 Ctrl键 + C ,速度快得多。

        10
  •  0
  •   dash-tom-bang    14 年前

    我几乎从不使用hjkl,因为它太单调了。我通常试着直接跳到我想去的地方。有一个伟大的 cheat sheet 在那里(A) Dvorak version 也是一个可用的(尽管它是PDF格式的),你可以凝视和想象各种可能性。

    通常我使用f、f、t和t,有时它们通过在前面键入一个数字来增强,比如 d2t) 最多删除第二个关闭paren。有时我用搜索。很多时候我用w,w,b,b,e和e。它们都很棒。

    当我看到VIM用户在视觉模式下到处箭头,只是为了删除文本,这让我发抖,因为有这么多更简单的方法(和HJKL只让你移动你的手臂少,他们不会改变按钮的数量)。

    我做了一些我不知道它是否常见的事情,我的箭头键被重新映射为 <Esc><Up> 等等。无论出于什么原因,我开始总是四处飞来飞去,并假设我会回到正常模式,所以我只是让它这样做…

    关于vim最大的麻烦是,现在当我在任何地方编辑任何东西的时候,我点击了Escape,然后输入 :w 每次改变之后…