VIM超快速导航

VIM超快速导航,vim,navigation,Vim,Navigation,关于使用其他编辑器,我唯一错过的就是用鼠标找到我的位置。我可以用我的眼睛看文件上的一个特定区域,只需移动鼠标和单击,我就在那里了。有了VIM,我必须JJJJKKKKKKJJJJJHHH。。。差不多了,我错过了三个字 我正在学习做标记,我发现了一个很棒的书签插件,我可以用创建标记并销毁它们,然后导航到它们,不幸的是,当文件关闭时,标记被忘记了 您如何浏览所有超级文件?我知道我也可以做5j7k4j5h等等,但必须有一个插件,可以读取我的眼睛,并把光标放在我真正需要的地方 我还学会了使用/%搜索特定术

关于使用其他编辑器,我唯一错过的就是用鼠标找到我的位置。我可以用我的眼睛看文件上的一个特定区域,只需移动鼠标和单击,我就在那里了。有了VIM,我必须JJJJKKKKKKJJJJJHHH。。。差不多了,我错过了三个字

我正在学习做标记,我发现了一个很棒的书签插件,我可以用
创建标记并销毁它们,然后导航到它们,不幸的是,当文件关闭时,标记被忘记了

您如何浏览所有超级文件?我知道我也可以做5j7k4j5h等等,但必须有一个插件,可以读取我的眼睛,并把光标放在我真正需要的地方


我还学会了使用/%搜索特定术语。它确实有帮助,但所有匹配的字符都会在整个文档中突出显示。

在vim中有无数种移动方式,这是它真正强大的领域之一。我经常使用{和},它们在这个方向上上下移动到下一个空白行用于来回移动到匹配的支架(任何类型)。W和B通过一个“单词”前后移动

查看Vim手册的部分可能是值得的。

Vim支持鼠标! 尝试一下(在.vimrc中):

旁注:作为一名屏幕用户,我发现我也需要

set ttymouse=xterm2

为了让它发挥作用。

是学习主要导航命令的好地方,vim的一些功率/速度来自于运动与动作的结合,即
cw
->更改单词,
d10j
->删除10行等等。这也是有趣的阅读

您可以
:设置nohlsearch
以关闭搜索字符的突出显示


我也经常使用ctags导航。

除了vim的运动命令外,我发现一个名为的vim插件非常有用,如果您熟悉VimOperator或pentadactyl,EasyMoon只需将提示模式带回vim即可。是一个动画演示,是视频教程。希望它对您有所帮助。

试试
$vimtutor
,它将教会您入门所需的一切知识

hjkl
是冰山一角,很少使用,至少在我的情况下是这样

wWEe
BbgegE
都允许逐字移动:

  • w
    e
    继续,
    w
    e
    将空格和标点符号考虑在内

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    
  • b
    ge
    向后走,
    b
    ge
    将空格和标点符号考虑在内

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    
fFtT
用于获取当前行上的特定字符和
用于重复该动作,方向与
相同和相反方向的

  • fm
    向前跳下一个
    m
    F
    向后跳

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    
    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    
  • tm
    在下一个
    m
    向前跳之前,
    T
    向后跳

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    
    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    
/?
用于从当前光标位置跳转到图案的第一个匹配项:

  • /pattern
    前进

    Latin: Lorem ipsum dolor sit amet.
    *            /ips
    
  • ?模式
    向后

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    
    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    
0$
用于跳转到行的第一个和最后一个字符

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $
    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_
^g
用于跳转到行的第一个和最后一个可打印字符

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $
    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_
单个和组合的
()[]{}
用于逐短语、逐段或逐代码块移动短语

用于按屏幕前后滚动

用于前后滚动半屏

H
M
L
分别将光标移动到视口的顶部、中部和底部

zt
zz
zb
分别将光标下的线移动到视口的顶部、中部和底部

等等


:help motion.txt
会让你大吃一惊。

使用选项
relativeEnumber
()你可以通过
[count]k
[count]j
运动进入眼线,你可以通过@romainl解释的
ftweb
等运动进入当前行。

除了
{
}
cb
cb
cW
%
,我使用这样的导航技术:

  • ciw
    diw
    ciw
    diw
    )等,快速编辑/删除光标下的单词(包括非空格字符)
  • ci(
    ci”
    ca(
    ca”
    )等)可快速编辑括号内的引号(包括括号、引号)。这同样适用于
    d
  • 用大写字母标记以全局(跨文件)和持久(当缓冲区关闭时)设置它们。例如,
    mA
    将创建全局标记
    A
    ,该标记将通过
    'A
    命令可用(或
    `A
    以尊重列)
  • gf
    快速转到光标下的文件
  • f
    t
    f
    t
    )移动到字符右(左)前面的字符(使用
    重复)。这些对于
    d
    c
    命令(使用
    重复)特别有用
  • ^]
    移动到标记,并
    ^T
    向后移动
还有很多其他的移动方式:)

有关更多信息,请查看此链接:


另外,对于rails用户来说,有一个非常有用的rails vim插件,您可能也想看看。

我个人更喜欢使用:

"/<chars><enter>" to quickly move to somewhere   ( extremely fast! trust me! )
":<number>" to go to some line, 
"ctrl + f/b" to forward/back
"g;" to move to the last editing place.
"w/b" to move by word
"jklh" to move your cursor to the exact position
“/”快速移动到某个地方(非常