zoukankan      html  css  js  c++  java
  • 【原创】Linux基础之vi&vim基础篇

    一 vi配置文件

    ~/.vimrc
    or
    /etc/vimrc

    ps:如果使用的是idea中的vim插件,使用的配置文件为 ~/.ideavimrc~~~`s

    配置文件中可以修改配色,可以修改键位绑定,可以修改配置,比如

    inoremap <C-a<Home>

    inoremap <C-e<End>

    inoremap <C-p> <Up>

    inoremap <C-n<Down>

    inoremap <C-b<Left>

    inoremap <C-f<Right>

    colorscheme darkblue

    默认配色文件夹:/usr/share/vim/vim74/colors

    注意74是版本号

    二 模式

    三个模式:命令模式、底线命令模式、输入模式

    命令模式(Command Mode)

    1 上/下/左/右移动光标

    h Left

    k Up

    j Down

    l RIght

    数字+j|k|h|l 可快速移动数字个字符

    2 光标快速移动

    G (文件末尾)

    1G (文件开头)

    gg 

    10G (跳到第10行的行首)

    10gg 

    :10回车 

    10回车 (光标向下移动10行)

    10j 

    H (当前屏幕的顶行)

    L (当前屏幕的底行)

    M (移动光标至屏幕的中间行)

    ^ (行首,不包含空格,第一个非空白字符,软行首)

    0 (数字0,行首,包含空格,第一个字符,硬行首)

    $ (行尾)

    - (上一行行首,软行首)

    + (下一行行首,软行首)

    空格 (向后移动1个字符)

    10空格 (向后移动10个字符)

    10l (小写的L)

    w (移动到下个单词的开头,这里的单词以非字母分隔)

    W (移动到下个单词的开头,这里的单词以空格分隔)

    e (移动到下个单词的结尾,同上)

    E (这里的单词以空格分隔,同上)

    ge (反向的e)

    b (移动到上个单词的开头,同上)

    B (这里的单词以空格分隔,同上)

    ( (移动到上个句子的开头)

    ) (移动到下个句子的开头)

    { (移动到上一段,空白行分割)

    } (移动到下一段,空白行分割)

    Ctrl+g (列出编辑信息,包括文件名、行号、列号等)

    >> (缩进,一个tab)

    << (反缩进,一个tab)

    f任意字符 (向后移动光标至指定字符)

    F任意字符 (向前移动光标至指定字符)

    t任意字符 (移动光标至指定字符之前)

    T任意字符 (反向移动光标至指定字符之前)

    10f任意字符(向后移动光标至指定字符的第10次出现位置)

    ; (repeat,重复上边的操作,继续移动光标到下一个位置)

    , (reverse,返回光标到上一个位置)

    3 翻页

    Ctrl+b (向上翻一页)

    Ctrl+u (向上翻半页)

    Ctrl+f (向下翻一页)

    Ctrl+d (向下翻半页)

    Ctrl+e (屏幕向下滚动,光标位置不变,区别于j)

    Ctrl+y (屏幕向上滚动,光标位置不变,区别与k)

    4 搜索

    /something (向下搜索)

    ?something (向上搜索)

    n 下一个 N 上一个

    # (向上选中当前光标所在单词)

    * (向下选中当前光标所在单词)

    5 删除字符

    x (向后删除,Delete)

    X (向前删除,Backspace)

    10x (向后删除10个字符)

    10X (向前删除10个字符)

    dw (向后删除1个单词)

    10dw (向后删除10个单词)

    d^ (删除光标到行首)

    d0 

    d$ (删除光标到行尾)

    di' (删除''之间的字符)

    da' (删除''之间的字符,包含')

    di" (删除""之间的字符)

    da" (删除""之间的字符,包含")

    ci ca (修改)

    yi ya (复制)

    dd (删除当前行)

    dj (删除下一行)

    dk (删除上一行)

    d10d (删除10行)

    10dd (删除10行)

    dG (删除光标所在行到最后一样)

    d1G (删除光标所在行到第一行)

    6 可视化复制粘贴

    V (可视行模式,块选择模式,然后上下移动光标直到选中所需行)

    v (可视模式,然后左右移动光标直到选中所需字符)

    y (复制所有选中字符)

    d (剪切所选中字符)

    p (将选中的文本粘贴到光标下一行)

    P (将选中的文本粘贴到光标上一行)

     

    7 复制

    yy (复制整行)

    Y

    10yy (复制10行)

    yw (复制下一个单词)

    10yw (复制下10个单词)

    yG (复制当前行到最后一行)

    y1G (复制当前行到第一行)

    y0 (复制当前光标至行首)

    y^

    y$ (复制当前光标到行尾)

    以上剪切和复制只能在vi内结合p使用,如果想在其他应用中粘贴,需要复制到剪贴板,命令如下:

    "*yG (全选复制)

    8 undo&redo操作

    u (undo 恢复到编辑前的状态)

    U (undo 恢复上一次操作,再按一次则重复上一次操作)

    . (redo 重复执行上一命令,比如dw)

    9 临时挂起和返回

    Ctrl+z (挂起)

    fg (返回)

    10 标记

    m任意字符 (标记光标当前位置为任意字符)

    `任意字符 (快速返回标记)

    '任意字符 (快速返回标记行的行首)

    :delmarks 任意字符 (取消标注)

    底线命令模式(Last Line Mode)

    命令模式输入:进入底线命令模式,删除:或者命令执行完返回命令模式

    1 显示行号或取消

    :set number

    :set nonumber

    or

    :set nu

    :set nonu

    2 自动缩进

    :set ai
    or
    :set autoindent

    3 智能缩进

    :set si
    or
    :set smartindent

    4 粘贴时取消自动缩进

    :set noai nosi
    or
    :set paste

    5 文本替换 a->b

    :%s/a/b/g (全部行)

    :s/a/b/g (当前行)

    :1,5s/a/b/g (1-5行)

    :1,5s/^/#/b (1-5行添加注释)

    另一种方式,在vim下

    1)Ctrl+v (进入块选择模式)

    2)j (移动光标选中1-5行)

    3)I (大写i,进入行首输入)

    4)# (输入注释字符)

    5)Esc (两次,退出块选择模式,同时在1-5行行首增加注释字符)

    6 将文件格式修改为unix

    :set fileformat unix

    7 保存&退出

    :w (保存)

    :q (退出)

    :q! (丢弃修改退出,等于ZQ)

    :wq (保存并退出,等于ZZ)

    8 临时执行命令

    :! some command (临时执行 some command)

    9 剪切

    :x,yd (将x到y行剪切)

    :x,y m z (将x到y行移动到z行之后)

    10 vim配色

    :colorscheme (查看当前配色)

    :colorscheme darkblue (修改配色,永久修改需要修改.vimrc)

    11 其他

    :h (帮助)

    :e filename(打开另一个文件)

    :new (打开新文件)

    :sav filename(另存为)

    :sp [filename] (打开另一个文件,同时上下分屏)

    :vsp [filename] (打开另一个文件,同时左右分屏)

    :q (退出分屏)

    Ctrl+w h|j|k|l (光标在分屏之间移动)

    输入模式(Insert Mode)

    从命令模式开始

    1 插入字符

    i (在光标后插入)

    I (在行首插入)

    a (在光标后追加)

    A (在行尾追加)

    o (从当前位置插入换行同时在换行后开始插入字符)

    O (从当前位置插入换行同时在换行前开始插入字符)

    r (替换当前1个字符,替换之后返回命令模式)

    R (进入替换模式)

    c0 (将光标之前至行首的字符全部删除,同时进入插入模式)

    c$ (将光标之后至行尾的字符全部删除,同时进入插入模式)

    cc (删除当前行,同时进入插入模式)

    cw (删除光标后一个单词,同时进入插入模式)

    2 进入输入模式后

    Ctrl+w (向左删除1个单词)

    Ctrl+u (向左删除至行首)

    Ctrl+h (向左删除1个字符)

    Ctrl+t (在行首增加缩进)

    Ctrl+d (在行首删除缩进)

    Ctrl+a (插入上次插入的内容)

    Ctrl+@ (插入上次插入的内容并结束插入模式)

    Ctrl+o (暂时返回命令模式,执行一个命令后返回输入模式,避免来回切换模式)

    Ctrl+u (恢复上次的修改)

    vi进入输入模式后,快捷键少的可怜,比如移动光标,虽然可以通过Ctrl+o,还是不如emacs方便,不过好消息是可以在vi里绑定emacs的快捷键

    # vi .vimrc

    inoremap <C-a> <Home>

    inoremap <C-e> <End>

    inoremap <C-p> <Up>

    inoremap <C-n> <Down>

    inoremap <C-b> <Left>

    inoremap <C-f> <Right>

    以上会绑定Ctrl+aepnbf等快捷键,可谓双剑合璧

    3 返回命令模式

    Esc

    Ctrl+c

    Ctrl+[

  • 相关阅读:
    linux signal 处理
    AssetManager asset的使用
    分治法-汉诺塔问题
    WebSocket初探
    分治策略结合递归思想求最大子序列和
    数据库索引的作用和长处缺点
    Android Service 服务(一)—— Service
    YouTube为什么打不开?以及简便的訪问的方法/解决方式!
    winzip15.0注冊码
    CodeForces 398B 概率DP 记忆化搜索
  • 原文地址:https://www.cnblogs.com/barneywill/p/10643774.html
Copyright © 2011-2022 走看看