zoukankan      html  css  js  c++  java
  • 3. Vim入门教程

     1. 基本概念

    1.1 了解Vim的三个基本模式

    当我们安装完一个编辑器后,肯定会打开它,然后在里面输入点什么东西,但是打你打开Vim后,想要输入点什么却发现自己什么都没有输入,所以在写点东西之前,先来了解下Vim的三个基本模式

    (1) Normal模式

    当你启动Vim后,Vim会处于Normal模式。在Vim的Normal模式下,所有的键就是功能键,下面附上Vim快捷键分布图。

    (2) Insert模式

    在Normal模式下,按下键盘上的i键入Insert模式(当然还有其他方式,比如按下a、o、O等,i是最常用的方法),当你在Vim左下角看到 -Insert- 字体,表明你已经进入Vim的Insert模式。在Insert模式下,你可以自由的输入你想要输入的东西了,就像使用其他编辑器一样~

    (3) Visual模式

    在Normal模式下按下,按下键盘上的v键进入Visual模式。在Visual模式下,可以让你选择文件的一部分内容,以便进行删除、复制等操作。

    1.2 三个基本模式之间的切换

    (1) Normal <-> Insert

    在Normal模式下,按下键盘上的 i 进入Insert模式

    在Insert模式下,按下键盘上的 Esc 键回到Normal模式,如果你不确定是否进入了Normal模式,可以多次按下Esc键

    (2) Noraml <-> Visual

    在Normal模式下,按下键盘上的 v 进入Visual模式

    在Visual模式下,按下键盘上的 Esc 键回到Normal模式(也可以再次按下v键)

    好了,到此为此,已经完成学习Vim的准备工程,准备正式开始学习Vim......

    1.3 常用功能一览:

     2. 文件相关操作

    2.1 创建/修改文件

    当需要对一个文件进行编辑时,首先这个文件得存在。你可以使用Vim创建或修改文件(假设文件名为hahaya.cc),在终端下执行 Vim hahaya.cc,这条命令会打开hahaya.cc文件,当hahaya.cc这个文件不存在时,Vim会创建这个文件并打开。

     Vim hahaya.cc,

    vim打开多文件时:

    vim a b c
    :n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
    :e# 回到刚才编辑的文件

    2.2 在Vim中打开/保存/退出/修改文件

    (1) :e filename " < - > 打开文件filename,注意filename包含文件路径. :e ~/hahaya.cc 打开主目录下的hahaya.cc文件
    (2) saveas filename " < - > 文件另存为,注意filename包含文件路径
    (3) :w " < - > 文件保存
    (4) :q  " < - >  不保存退出,回到终端下
    (5) :q!  " < - > 不保存强制退出
    (6) :wq  " < - > 保存退出
    (7) :wq!   "  < - > 强制保存退出
    (8) :bn  "  < - > 打开多个文件时,使用该命令切换到下一个文件
    (9) :bp   " < - > 打开多个文件时,使用该命令切换到上一个文件

    2.3 文件浏览

    :Ex  "开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
    :Sex "水平分割当前窗口,并在一个窗口中开启目录浏览器
    :ls  "显示当前buffer情况

    2.4 vi与shell切换

    :shell   "可以在不关闭vi的情况下切换到shell命令行
    :exit   "从shell回到vi

     3. 显示方式

    3.1 多标签打开

    (1)进入vim前

    vim -p <文件名>

     以多标签形式打开文件。如vim -p * 就是编辑当前目录的所有文件

    (2)vim编辑中

    :tabe <文件名>   " 在新标签页中打开指定的文件。
    :tabnew <文件名> " 在新标签页中编辑新的文件。
    :tab split " 在新标签页中,打开当前缓冲区中的文件。
    :tabf      " 允许你在当前目录搜索文件,并在新标签页中打开。比如:tabf img.*。此命令只能打开一个文件.
    
    :tabnew   " 增加一个标签
    :tabc      " 关闭当前的tab
    :tabo      " 关闭所有其他的tab
    :tabs      " 查看所有打开的tab
    :tabp 或gT " 前一个
    :tabn 或gt " 后一个 
    :tablast   " 移动到最后一个标签页。
      
    :tabm [次序] " 移动当前文件的标签页次序。比如:tabm 1将把当前标签页移动到第2的位置。如:tabm不指定参数将被移动到最后。
    :set showtabline=[1,2,3] " 标签页在窗口上方显示标签栏。=0完全不显示标签栏,=1只有用户新建时才显示,=2总是显示标签栏。

    Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。

     帮助

    :help tab-page-intro命令,可以获得关于标签页使用的更多信息。

    3.2 多窗口使用技巧

    (1) 打开多个窗口

    打开多个窗口的命令以下几个:

    " 横向切割窗口
    :new+窗口名 "(保存后就是文件名)
    :split+窗口名 "也可以简写为:
    :sp+窗口名
    
    " 纵向切割窗口名
    :vsplit+窗口名 ",也可以简写为:
    :vsp+窗口名

    (2) 关闭多窗口

    :q!
    :close
    :tabc   " 关闭当前窗口
    :tabo   " 关闭所有窗口

    可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。

    (3) 窗口切换

    :ctrl+w+j/k "通过j/k可以上下切换,
    
    " 或者:ctrl+w加上下左右键,
    " 还可以通过或者两次ctrl+w依次切换窗口。
    
    :tabs       " 查看所有打开的tab
    :tabp 或gT  " 前一个
    :tabn 或gt  " 后一个 
    :tablast    " 移动到最后一个标签页。

    (4) 窗口大小调整

    " 纵向调整
    :ctrl+w +  " 纵向扩大(行数增加)
    :ctrl+w -   " 纵向缩小 (行数减少)
    :res(ize) num   " 例如::res 5,显示行数调整为5行
    :res(ize)+num  " 把当前窗口高度增加num行
    :res(ize)-num   " 把当前窗口高度减少num行
    " 横向调整
    :vertical res(ize) num  " 指定当前窗口为num列
    :vertical res(ize)+num " 把当前窗口增加num列
    :vertical res(ize)-num  " 把当前窗口减少num列

    (5) 给窗口重命名

    :f file

     4. 基本操作

    4.0 进入及退出 vim tutor:

    进入时,使用命令:

    :vimtutor

    即可进入vimtutor,如果是gvim打不开,可以在运行(WIN+R)里输入vimtutor打开。

    退出时,使用命令:

    1 <ESC>   :q!     <ENTER>  "  不保存退出
    2 <ESC>   :wq     <ENTER>  "  保存后退出
    3 
    4 
    5 
    6 " 等价于:
    7 
    8     ZZ   ":保存退出
    9     ZQ  ":不保存退出

    4.1 move 书签、及跳转

    (1) 光标移动

       k "(up)
    h "(left)        l "(right)
    
        j "(down)
    
    e   "(词尾,end of word)
    w  "(下一单词,beginnig of word)
    b  "(前一单词,back word)
    0  "(“硬”行首,start of line)
    ^  "(“软”行首),移动到本行第一个不是blank字符的位置(所谓blank字符就是空格、Tab、换行、回车等)
    $  "(行末,end of line)
    
    G  "(文尾,end of file)
    gg  "(文首,start of file)
    NG  "(go to line N), 移动到本文件的第N行
    
    CTRL-o  " (上次光标位置)
    CTRL-i   " (下次光标位置)
    
    {    "(段首)
    }    "(段尾)
    [[  "(文件首行)
    ]]  "(文件尾行) 
    %        "(括号匹配)
    CTRL-G   "(获取位置信息)

    (2) 屏幕移动

    CTRL-F  " (前翻页)
    CTRL-B  "(后翻页)
    CTRL-D   " 向下半页
    CTRL-U   " 向上半页
    " 我觉得更实用 这样看文章时就不会跳转出错另外还有
    CTRL-E "向下一行 CTRL-Y "向上一行 zt   "(移动光标所在行至屏幕顶端) zb  "(底端) zz  "(中间) H "(屏幕顶行) L "(屏幕底行) M "(屏幕中间行)

    (3) mark和跳转

    mx   ":添加本文件"书签"x
    mX   ":添加全局"书签"X
    `x   ":跳转到书签x所在的行和列
    'x   ":跳转到书签x所在行
    ``   ":跳转到本文件上次离开的位置
    gi   ":跳转到上一次插入的位置
    gv   ":跳转到上一次进入visual的位置

    4.2 Insert

    i  " (插入模式,before the cursor)
    I    " (行头插入)
    a  "(附加,after the cursor)
    A  "(行末附加,end of line)
    o  "(分段,后)
    O  "(分段,前)
    
    s    "(删除字符并插入)
    S    "(删除至行末,并插入)
    
    cw   " (删除一个字,并插入)
    C    "(删除至行末,并插入)

    4.3 Undo

    u      "(undo)
    CTRL-R  "(undo the undo's)
    U      "(fix a whole line)

    4.3 Edit

    x     "(delete char)
    d     "(delete)
    dd   "(删除一行)
    D     "(删除至行末)
    d2w   "(delete 2 words)
    2dd   "(delete 2 lines)
    
    yy     "拷贝当前行
    Nyy   "拷贝从当前行开始的总共N行
    p       "小写p,粘贴拷贝的内容

    4.5 Search

    /errroor  "(查找erroor, 向下)
    n     " (下一处)
    N     " (上一处)
    ?errroor  "(反向查找)
    n
    N
    
    /ignorec    " (c 表示忽略大小写)
    
    :nohlsearch " (取消高亮显示)
    
    " Typing ":set xxx" sets the option "xxx".  Some options are:
        ic 或者 ignorecase  "  ignore upper/lower case when searching
        is 或者 incsearch   " show partial matches for a search phrase
        hls 或者 hlsearch  "  highlight all matching phrases

    4.6 Replace

    R     "(改写模式)
    r    "(改写一个字符)
    J    "(合并两行)
    
    :s/thee/the       "(把thee 替换成 the,该行第一个)
    :s/thee/the/g      "(该行全部)
    :s/thee/the/c     "(询问)
    :2,3s/old/new/g    "(替换第2到3行的所有old为new)
    :%s/old/new/gc     "(替换全文中出现的old,并有提示)
    
    :.,.+8s/dog/cat/g   "(命令只在后续9行内进行替换:) 
    :.,$s/dog/cat/g    "( 只在当前行至文件结尾间进行替换)
    
    :/FROM/,/;/s/=/<>/g   " 特定字符做为替换范围, 将从FROM至分号部分中的所有等号(=)替换为不等号(<>):

     5. 寄存器

    6. 宏

    7. 小技巧

    7.0 未归类

    ==       " 格式化代码,该行
    num<C-a> " 第一个遇到的数字加num 
    num<C-x> " 第一个遇到的数字减num
    <c-]>    " 跳转到定义
    <c-o>    " 返回原来光标位置
    za       " 折叠代码 
    
    
  • 相关阅读:
    百度前端技术学院task35源代码——听指令的小方块3
    百度前端技术学院task34源码——会指令的小块2
    ManyToManyField 增加记录
    同一个页面多个按钮,根据按钮名字执行相应功能
    django 函数装饰器 变为 类装饰器
    script 跳出小窗口
    django 把函数装饰器变为方法装饰器
    modelform添加属性
    Cannot assign “A1”: “B1” must be a “C1” instance.
    Django form choices, placeholder
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/6400885.html
Copyright © 2011-2022 走看看