zoukankan      html  css  js  c++  java
  • vim操作

    第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等

    1、移动光标的方法

    h或向左箭头键(←)         光标向左移动一个字符

    j或向下箭头键(↓)           光标向下移动一个字符

    k或向上箭头键(↑)          光标向上移动一个字符

    l或向右箭头键(→)          光标向右移动一个字符

        如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动30行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可

    [Ctrl] + [f]       屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)

    [Ctrl] + [b]      屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)

    [Ctrl] + [d]      屏幕『向下』移动半页

    [Ctrl] + [u]      屏幕『向上』移动半页

    +                    光标移动到非空格符的下一列

    -                     光标移动到非空格符的上一列

    n<space>        那个n表示『数字』例如20 。按下数字后再按空格键光标会向右移动这一行的n个字符。例如20<space> 则光标会向后面移动20个字符距离。

    0或功能键[Home]    这是数字『 0 』,移动到这一行的最前面字符处 (常用)

    $ 或功能键[End]      移动到这一行的最后面字符处(常用)

    H                          光标移动到这个屏幕的最上方那一行的第一个字符

    M                          光标移动到这个屏幕的中央那一行的第一个字符

    L                           光标移动到这个屏幕的最下方那一行的第一个字符

    G                          移动到这个档案的最后一行(常用)

    nG                        n为数字。移动到这个档案的第n行。例如20G则会移动到这个档案的第20行(可配合 :set nu)

    gg                        移动到这个档案的第一行,相当于1G啊! (常用)

    n<Enter>             n为数字。光标向下移动 n 行(常用)

    2、搜寻与取代

    /word        向光标之下寻找一个名称为word的字符串。例如要在档案内搜寻vbird这个字符串,就输入/vbird 即可! (常用)

    ?word        向光标之上寻找一个字符串名称为 word 的字符串。

    n               这个 n 是英文按键。代表『重复前一个搜寻的动作』。举例来说, 如果刚刚我们执行/vbird 去向下搜寻vbird这个字符串,则按下n后,会向下继续搜寻下一个名称为vbird的字符串。如果是执行?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!

    N                这个N是英文按键。与n刚好相反,为『反向』进行前一个搜寻动作。 例如/vbird后,按下N则表示『向上』搜寻vbird 。使用/word配合n及N是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!

    :n1,n2s/word1/word2/g         n1与n2 为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100到200行之间搜寻vbird 并取代为 VBIRD 则『:100,200s/vbird/VBIRD/g』。(常用)

    :1,$s/word1/word2/g             从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!(常用)

    :1,$s/word1/word2/gc           从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!且在取代前显示提示字符给用户确认(confirm) 是否需要取代!(常用)

    3)删除、复制与贴上

    x, X         在一行字当中,x为向后删除一个字符 (相当于 [del] 按键),剪切后一个字符到剪贴板,X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用),剪切前一个字符到剪贴板。

    nx           n为数字,连续向后删除n个字符。举例来说,我要连续删除10个字符,『10x』。

    dd或D      删除游标所在的那一整列(常用),剪切从光标位置到行尾到剪贴板

    ndd          n为数字。删除光标所在的向下n列,例如20dd则是删除20列 (常用)

    d1G          删除光标所在到第一行的所有数据

    dG           删除光标所在到最后一行的所有数据

    d$           删除游标所在处,到该行的最后一个字符

    d0           那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符

    yy或Y      复制游标所在的那一行(常用)

    cc或C      剪切当前行并且进入插入模式

    nyy         n为数字。复制光标所在的向下n列,例如20yy则是复制20列(常用)

    y1G        复制光标所在列到第一列的所有数据

    yG          复制光标所在列到最后一列的所有数据

    y0          复制光标所在的那个字符到该行行首的所有数据

    y$          复制光标所在的那个字符到该行行尾的所有数据

    p, P       p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行! 举例来说,我目前光标在第20行,且已经复制了10行数据。则按p后, 那10行数据会贴在原本的20行之后,亦即由21行开始贴。但如果是按P呢? 那么原本的第20行会被推到变成30行。 (常用)

    J            将光标所在列与下一列的数据结合成同一列

    c            重复删除多个数据,例如向下删除 10 行,[ 10cj ]

    u            复原前一个动作。(常用)

    [Ctrl]+r   重做上一个动作。(常用)  这个u与[Ctrl]+r是很常用的指令,一个是复原一个则是重做一次

    .             不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

    4)其他一般模式操作
    w:光标右移一个字至字首   

    W:光标右移一个字至字首,忽略标点符号   

    b或B:光标左移一个字至字首   

    e或E:光标右移一个字至字尾   

    ) :光标移至句尾   

    ( :光标移至句首   

    }:光标移至段落开头   

    {:光标移至段落结尾   

    n+:光标下移n行   

    n-:光标上移n行   

    d :剪切       d$:剪切到行尾       d0:剪切到行首   

    $p:将就剪切的数据粘贴到当前行的行尾      

    0p:讲数据粘贴到当前行的行首

    fx:移动光标到当前行的下一个x处。x可以是任意一个字母,而且你可以使用;来重复你的上一个f命令。    Fx和fx类似,不过是往回找。

    tx:和上面的命令类似,但是是移动到x的左边一个位置。(这真的很有用)Tx和tx类似   

    *:读取光标处的字符串,并且移动光标到它再次出现的地方。   

    #:和上面的类似,但是是往反方向寻找。


    第二部份:一般模式切换到编辑模式的可用的按钮说明

    i, I

    进入插入模式(Insert mode): i为从目前光标所在处插入, I为在目前所在行的第一个非空格符处开始插入。

    a, A

    进入插入模式(Insert mode):a 为从目前光标所在的下一个字符处开始插入, A 为从光标所在行的最后一个字符处开始插入。

    o, O

    进入插入模式(Insert mode):这是英文字母o的大小写。o 为在目前光标所在的下一行处插入新的一行,O 为在目前光标所在处的上一行插入新的一行。

    r, R

    进入取代模式(Replace mode):r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止。

        上面这些按键中,在vi画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!


    [Esc]

    退出编辑模式,回到一般模式中。


    第三部份:一般模式切换到指令列模式的可用的按钮说明

    :w         将编辑的数据写入硬盘档案中

    :w!       若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!

    :q         离开 vi (常用)

    :q!        若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。注意一下啊,那个惊叹号在vi当中,常常具有『强制』的意思~

    :wq      储存后离开,若为 :wq! 则为强制储存后离开。

    :x        保存当前文件并退出

    ZZ      这是大写的Z喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!

    :w [filename]        将编辑的数据储存成另一个档案(类似另存新档)

    :r [filename]         在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面

    :n1,n2 w [filename]        将 n1 到 n2 的内容储存成 filename 这个档案。

    :! command        暂时离开 vi 到指令列模式下执行 command 的显示结果!例如『:! ls /home』即可在vi当中察看 /home 底下以ls输出的档案信息!


    第四部份:其他常用功能

    v             字符选择,会将光标经过的地方反白选择!

    V             行选择,会将光标经过的行反白选择!

    [Ctrl]+v   区块选择,可以用长方形的方式选择资料

    y            将反白的地方复制起来

    d            将反白的地方删除掉;剪贴选择的内容到剪贴板

    c            剪贴选择的内容到剪贴板并且进入插入模式

    小技巧:I{string}<ESC> :选定块后按大写的I,输入字符串,再按ESC,可以在块内每一行插入相同的内容。


    补充

    1、多文件编辑

    :n       编辑下一个档案

    :N      编辑上一个档案

    :files     列出目前这个 vim 的开启的所有档案

    :e 文件路径 或 :vim 文件路径      在用vi编辑一个文件时再打开其他文件

    :r filename       读入某个文件的内容

    2、进入vi的命令

    vi filename:打开或新建文件,并将光标置于第一行首  

    vi +n filename:打开文件,并将光标置于第n行首   

    vi + filename:打开文件,并将光标置于最后一行首   

    vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处   

    vi -r filename:在上次正用vi编辑时发生系统崩溃,恢复filename  

    vi filename....filename:打开多个文件,依次进行编辑

    3、多窗口编辑

    :sp [filename]       开启一个新窗口,如果有加filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)

    :vert sp filename    水平分割窗口

    [ctrl]+w+ j 、[ctrl]+w+↓        按键的按法是先按下 [ctrl] 不放, 再按下w后放开所有的按键,然后再按下j (或向下箭头键),则光标可移动到下方的窗口

    [ctrl]+w+ k 、[ctrl]+w+↑        同上,不过光标移动到上面的窗口

    [ctrl]+w+ q     其实就是:q结束离开,举例来说,如果我想要结束下方的窗口,那么利用[ctrl]+w+↓ 移动到下方窗口后,按下:q即可离开, 也可以按下[ctrl]+w+q !

    :split/vsplit      分隔一个窗口   

    :new/vnew      创建一个新的窗口   

    :sf {filename}  在新窗口中打开filename   

    :close    关闭当前窗口   

    :only     关闭除当前窗口外所有窗口   

    :ctrl-w h    到左面的窗口   

    :ctrl-w l     到右面的窗口   

    :ctrl-w t    到顶部的窗口   

    :ctrl-w b    到底部的窗口

    4、执行Shell命令  

    :ctrl+z/suspend:在shell下是挂起vim; gui下是最小化窗口   

    :!{command}:执行shell命令 

    :shell:开一个新的shell   

    :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入   

    :r!command:将命令command的输出结果放到当前行

    5、寄存器操作  

    "?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字   

    "?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字   

    "?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字   

    "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

    6、使用多重剪贴板  

          很多编辑器都只提供了一个剪贴板。vim有很多剪贴板在vim里面被称为寄存器Registers。 你可以列出当前定义的所有寄存器名和它们的内容,命令为":reg"。  最好使用小写字母来作为寄存器的名称,因为大写的有些被vim占用了,使用寄存器的命令为双引号“。比如:我们要拷贝当前行到寄存器k。你应该按"kyy(你也可以使用 V"ky),现在当前行应该已经存在了寄存器k里面直到你又拷贝了一些东西进入寄存器k。现在你可以使用命令 "kp 来粘贴寄存器k里面的内容到你想要的位置。

    7、记录宏
         有时候,你会发现你自己在文章的每段或者每行都重复相同的一系列动作,vim允许你记录一个宏来完成你的特殊需要。qregister记录宏到寄存器register,这里register是任意的你的寄存器的名字,比如qa:将会记录并且把宏存在寄存器a里面。
    q:结束宏的记录
    @register:使用存在寄存器register的宏。比如@a,将会使用存在寄存器a里面的宏
    必须要记住的是宏只记录了你的系列按键并且重复执行它们。它们不是魔法。因为在vim里面完成目的的方法有很多,所以有时候你要小心选择命令来记录你的宏。因为它们会在所有你要执行它的地方执行。

    8、书签  
    ma:在当前光标的位置标记一个书签,名字为a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
    `a:到书签a处。注意这个不是单引号,它一般位于大部分键盘的1的左边。
    `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。


    vim环境设置

        系统对vim的操作会自动记录到~/.viminfo,整体 vim 的设定值一般是放置在/etc/vimrc(不建议修改他!对系统所有用户有效)可以修改 ~/.vimrc  (预设不存在,请你自行手动建立!)

    :set nu 、:set nonu      就是设定与取消行号!

    :set hlsearch 、:set nohlsearch    hlsearch就是 high light search(高亮度搜寻)。 这个就是设定是否将搜寻的字符串反白的设定值。默认值是 hlsearch

    :set autoindent 、:set noautoindent     是否自动缩排?autoindent 就是自动缩排。

    :set backup    是否自动储存备份档?一般是nobackup的, 如果设定backup的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为 filename~ 的档案。 举例来说我们编辑hosts ,设定:set backup ,那么当更动hosts时,在同目录下,就会产生hosts~ 文件名的档案,记录原始的hosts档案内容

    :set ruler      还记得我们提到的右下角的一些状态栏说明吗? 这个ruler就是在显示或不显示该设定值的啦!

    :set showmode    这个则是,是否要显示 --INSERT-- 之类的字眼在左下角的状态栏。

    :set backspace=(012)     一般来说, 如果我们按下i进入编辑模式后,可以利用退格键 (backspace) 来删除任意字符的。 但是某些 distribution 则不许如此。此时,我们就可以透过 backspace 来设定啰~ 当 backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字了!

    :set all         显示目前所有的环境参数设定值。

    :set             显示与系统默认值不同的设定参数, 一般来说就是你有自行变动过的设定参数啦!

    :syntax on 、:syntax off      是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文本档时,如果开头是以 # 开始,那么该行就会变成蓝色。 如果你懂得写程序,那么这个 :syntax on 还会主动的帮你除错呢!但是, 如果你仅是编写纯文本档案,要避免颜色对你的屏幕产生的干扰,则可以取消这个设定 。

    :set bg=dark、:set bg=light    可用以显示不同的颜色色调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看会有不同的样式呢!

    终端vim颜色设置:

    1)/etc/vimrc中
    if &term=="xterm"
         set t_Co=256     <----指定配色方案,推荐256,默认是8
         set t_Sb=^[[4%dm
         set t_Sf=^[[3%dm
    endif
    2)设置环境变量:TERM=xterm-color

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/defias/p/3281710.html
Copyright © 2011-2022 走看看