zoukankan      html  css  js  c++  java
  • 文件编辑器vim

    VIM编辑器

    在Linux中一切皆文件,Linux一般自带的编辑器是vi,vim相当于vi的一个增强版,支持颜色显示,相比于vi增加了一些功能。默认vim没有安装,需要通过yum install -y vim安装。

    常用选项

    -o file1 file2... 同时编辑多个文件(上下排列)
    -O file1 file2... 同时编辑多个文件(左右排列)
    -p file1 file2... 同时编辑多个文件(每个文件一个标签)
    • 使用Ctrl+ww:切换不同的文件

    vim的三种模式

    命令模式:使用vim打开一个文件即进入命令模式

    快捷命令 功能
    h,j,k,l 对应左下上右键
    数字0 光标移到行首
    $ 光标移动到行尾
    x 删除/剪切光标所在字符
    dd 删除/剪切光标所在行
    ndd 删除/剪切n行,包括光标所在行
    yy 复制光标所在行
    nyy 复制n行,包括光标所在行
    p 将复制的内容粘贴到光标所在行的下一行
    P 将复制的内容粘贴到光标所在行的上一行
    np/nP 粘贴n次
    gg 光标移动到文件首行
    G 光标移动到文件尾行
    nG 光标移动到第n行
    H 光标移动到当前屏幕首行
    M 光标移动到当前屏幕中间行
    L 光标移动到当前屏幕尾行
    u 撤销
    Ctrl+r 撤销撤销
    Ctrl+v 可视块,常用来批量添加/删除注释
    • 批量删除注释,光标移动到要删除的多行注释首行的注释符号#上,按Ctrl+v,按下键选择要删除行的#号,按d删除。
    • 批量添加注释,光标移动到要添加的多行注释首行第一位上,按Ctrl+v,按下键选择要添加#号的行,按I(大写i)进入插入模式,输入#号,按两次ESC即可批量添加注释。

    末行模式:命令模式按:进入末行模式

    命令 功能
    w 保存
    q 不保存退出
    wq 保存并退出
    ! 表示强制
    set nu 显示行号
    set nonu 取消行号
    set ic 不区分大小写
    set ai 自动缩进
    set list 显示行结束符
    % s/regexp/new/ 将所有行的第一个regexp替换为new字符串
    % s/regexp/new/g 将所有行的所有regexp替换为new字符串
    n s/regexp/new/g 将第n行的所有regexp替换为new字符串
    m,n s/regexp/new/g 将m行至第n行的所有regexp替换为new字符串
    n,$ s/regexp/new/g 将第n行至尾行的所有regexp替换为new字符串
    n,m w /PATH/file_name 将第n至m行写入/PATH/file_name这个文件
    r /PATH/file_name 将/PATH/file_name文件内容写入光标下一行
    /字符串 查找字符串(高亮显示),按n(向下)/N(向上)移动光标

    上述显示行号与行结束符等设置是临时设置,若要永久生效要写入配置文件:

    作用域 文件路径
    全局生效 /etc/vimrc
    单用户生效 ~/.vimrc(默认不存在,需手动创建)

    vi工作流程图

    插入模式:

    • 命令模式按a,i,o进入插入模式,插入模式可输入字符编辑文件。

    vimdiff命令

    以vim的方式打开多个文件对比,高亮显示不同的区域。

    比较两个文件的差异

    diff file1 file2 # 比价file1和file2的不同,<表示左边文件的不同,>表示右边文件的不同
    

    给旧文件打补丁(update)

    # 首先创建补丁文件
    [chirou@duorou demo]$ diff -u f3.txt f4.txt > bak.patch
    [chirou@duorou demo]$ cat bak.patch 
    --- f3.txt	2020-10-22 20:05:19.613940026 +0800
    +++ f4.txt	2020-10-22 20:05:20.268935888 +0800
    @@ -1,3 +1,3 @@
    -this is f3.txt
    +this is f4.txt
     hahahaha
    -
    +hehehehe
    

    在数学上来说,diff类似于对两个集合的差运算,patch类似于对两个集合的和运算。diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的patch文件,即补丁文件。 patch能将diff文件运用于原来的两个集合之一,从而得到另一个集合。举个例子来说文件A和文件B,经过diff之后生成了补丁文件C,那么这个过程相当于 |A –B| = C ,那么patch的过程就是B + C = A 或A - C = B(A + C = B或者B – C = A)。因此我们只要能得到A, B, C三个文件中的任何两个,就能用diff和patch这对工具生成另外一个文件。这就是diff和patch的妙处。

  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/ChiRou/p/13865752.html
Copyright © 2011-2022 走看看