zoukankan      html  css  js  c++  java
  • vim 光标快速移动技巧总结

    vim 光标快速移动技巧总结

    原文链接:https://blog.csdn.net/llzhang_fly/article/details/80474966

    vim 快速编辑快捷键,总结如下:

    
    **1. 为什么使用hjkl作为方向键?**
    hjkl :
    为什么用 HJKL 键作为方向键?当 Bill Joy 创建 Vi 文本编辑器时,他使用的机器机器是 ADM-3A 终端机,这机器就是把 HJKL 键作为方向键。自然而然,Bill Joy 也就用了相同的按键了。
    
    
    hjkl,用熟了,相对其它编辑器或者鼠标来说,确实挺方便的。 
    
    
    
    **2. 快速移动光标至行首和行尾**
    1)行首:使用键盘上的编辑键Home;
    也可在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。
    2)行尾:使用编辑键End;
    也可以在命令模式中使用快捷键"$"(Shift+4)。
    快捷键"$"前可以加上数字表示移动的行数。例如使用"1$"表示当前行的行尾,"25$"表示当前行的下25的行尾。
    
    3)I是定位到行首,A是定位到行末。
    
    
    
    **3. 向下移动100行(适合小范围移动)**
    
    100j表示向下移动100行(从当前位置开始)
    
    
    
    **4. 查找某字符串(适合大范围移动)**
    /hello 
    向后查找关键词hello,回车就到了后面第一个hello处。 
    ?hello 
    向前查找关键词hello 
    shift+* 向后查找当前光标处的单词 
    
    shift+# 向前查找当前光标处的单词
    
    
    
    **5. 行内快速移动**
    1) 以字符为准(适合行内移动)
    利用f命令搜索某字符方式 ,
    f表示向后移动到某字符: 
    比如fa表示向后移动到字符a处 
    Fa表示向前移动到字符a处:
    2) 以word为“单位”(适合小范围移动)
    同理,利用w,b,配合数字。 
    2w表示向后移动2个word; 
    2b表示向前移动2个word; 
    2e表示向后移动2个word,但是会移动到word字符之后。 
    如果想忽略标点符号的word,就用大写 
    W 
    B 
    
    E
    
    
    
    **6. 移动到文本开头或结尾(适合大范围移动)**
    gg表示移动到文本开头; 
    
    G表示移动到文本结尾;
    
    
    
    **7. 利用行号移动到某一行(适合大范围移动)**
    
    :123表示移动到第123行
    
    
    
    **8. 翻页(适合大范围移动)**
    ctrl+f表示向下翻页 
    
    ctrl+b表示向上翻页
    
    
    
    **9. 利用标记mark命令**
    ma表示标记该行为a;包括第几列的信息,都在标记a里。 
    ‘a表示跳转到标记a处;会跳转到标记a的行首。单引号’ 
    `a表示跳转到标记a处;会跳转到标记a的行,包括第几列。更精准。按键在波浪号处。
    
    
    快速移动技巧基本就这些吧。 
    网上还有括号移动的,段落移动的,其实用上述技巧就够了。如果没有特别有意义的,不如熟练掌握上述技巧。 
    
    比如移动到上一个{,那么输入命令?{
    
    
    
    **10. 复制、删除同行一段文字**
    比如复制一部分文字,从time到tutor之间的内容。 
    The approximate time required to complete the tutor is 25-30 minutes. 
    
    最基本的就是用hjkl移动到time处,v命令,用hjkl移动到tutor,选中后,按y。命令结束。 
    
    
    
    熟悉快速移动后,/time回车,y/tutor。命令结束。 
    同理,如果delete,一样。/time回车,d/tutor。命令结束。 
    同理,如果change,一样。/time回车,c/tutor。命令结束。
    change命令,适合修改代码。很有用。具体介绍可以输入命令:help c 
    比如cc表示删除本行并开始重写。删除本行同时执行insert模式。
    
    
    ****11. 用ctags命令对当前目录下的c源程序扫描,生成tags文件(未验证)****
    $ ctags *.c 
    这样,在vi里通过命令 
    :ta fun_name 
    
    就可以直接打开函数fun_name所在的文件,并将光标置于函数开头
    
    
    
    **12. vim在同一个窗口中同时编辑多个文件**
    1) 如果在终端中开没有打开vim,可以:
    横向分割显示: -o
    纵向分割显示: $ vim -O filename1 filename2  
    2) 如果已用vim打开1个文件,想在窗口中再打开另一个文件:
    横向分割显示: :vs filename  
    纵向分割显示: :vsp xxx.c
    [plain] view plain copy
    1. :sp filename  
    **其中,vs可以用vsplit替换,sp可以用split替换。**如果finename不存在,则会新建该文件并打开。
    3) 关闭窗口
    关闭光标所在的窗口: :q  #或  :close  
    关闭除光标所在的窗口之外的其他窗口: :only  
    关闭所有窗口: :qa  
    ****4) 切换窗口****
    打开了多个窗口,需要在窗口之间切换时:
    ctrl + w w : 即按住ctrl键,再按两下w键。
    
    或者ctrl + w <h|j|k|l> :即按住ctrl键,按一次w键,再按一次表示方向的h或j或k或l,则光标会切换到当前窗口的 左|下|上|右 侧的窗口
    
    
    
    **13. 使用vi打开编辑多个文件;** 
    打开一个文件: vi 文件名
    然后在vi的命令输入状态下输入
    :sp 另外一个文件的路径及文件名,如此就可以在一个窗口打开多个文件了。
    
    
    或者用vi -o file1 file2 file3....用分割屏幕窗口方式同时打开多个文件。
    
    可以使用 ctrl + 两次按 w 或者ctrl + w然后按上下键在上下窗口间切换。
    
    
    
    **14. 在多个文件间复制粘贴内容**
    vi多文件时,文件之间的拷贝复制只能通过命名缓存进行,如:
    "a3yy  把3行内容复制到命名为a的缓冲区
    "ap 把名字为a的缓冲区内容拷贝到当前位置
    (注意:此时,不是输入冒号,而是输入“)
  • 相关阅读:
    .NET 动态脚本语言
    webParts与Web部件
    比较JqGrid与XtraGrid
    XtraGrid滚轮翻页
    Python------继承
    Python 私有化类的属性
    Python print 输出不换行,只有空格
    Python--函数参数类型
    手推FP-growth (频繁模式增长)算法------挖掘频繁项集
    Python 返回多个值+Lambda的使用
  • 原文地址:https://www.cnblogs.com/hypj/p/13953750.html
Copyright © 2011-2022 走看看