04Linux之Vim

BamB00 2021-04-12 00:04:28
Categories: Tags:
title: 04LinuxVim
tags:
    - linux
date: 2019-11-08

0x01 vim

vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版,可以使用别名代替vi

# alias vi='vim'

永久生效放入到环境变量~/bashrc

0x011 基本使用

0x0111 vim的三种工作模式

img

  1. 命令模式:

    命令 作用
    a 在光标所在字符后插入
    A 在光标所在行尾插入
    i 在光标字符前插入
    I 在光标所在行行首前插入
    o 在光标下插入新行
    O 在光标上插入新行
  2. 输入模式:

    主要用于文本编辑,就是记事本怎么输入就怎么来

  3. 编辑模式

    只要输入一个 :即可进入编辑模式

    :w #保存不退出
    :w 新文件名 #把文件另存为
    :q #不保存退出
    :wq #保存退出
    :q! #强制不保存退出,用于修改文件之后,不保存数据退出
    :wq! #强制保存退出,当文件所有者或者root对用户没有写权限的时候,强制写入数据使用
    

0x0112 命令模式操作

0x01121 移动光标

  1. 移动光标

    左,下,上,右
    H,J,K,L
    
  2. 把光标移动到文件头或尾

    gg 移动到文件头
    G  移动到文件尾巴(shift+g 也可以)
    
  3. 移动到行首或者行尾

    ^ 移动到行首
    $ 移动到行尾
    
  4. 移动到指定行数

    :n 移动到第n行
    

0x01122 删除或剪切

  1. 删除字母(少用)

    x 删除单个字母
    nx 删除n个字母 如从光标 连续删除10个字母则 10x即可
    
  2. 删除整行或剪切

    dd 删除单行
    ndd 删除多行
    :n1,n2d 删除n1到n2的行
    

    dd其实是剪切的内容,如果不粘贴则是删除。

    p  粘贴到光标后
    P(大)  粘贴到光标前
    
  3. 从光标所在行一直删除到文件尾

    dG 从光标所在行删除到文件尾 d是删除行,G是文件尾。
    

0x01123 撤销

u 撤销 相当于windows的 "ctrl+z"
Ctrl+r 反撤销 相当于windows的 "ctrl+y"

0x01124 复制

yy    复制单行
nyy 复制多行

#粘贴还是P和p

0x01125 替换(少用输入模式比命令行替换方便多)

r 替换光标所在处的字符
R 从光标所在处开始替换字符,按ESC结束

0x0113 Vim配置文件

下面的指令多数只在Vim中才能生效

设置参数 含义
:set nu/nonu 显示与取消行号 默认不显示
:syntax on/off 是否根据语法显示相关的颜色帮助。在Vim中修改相关的配置文件或Shell脚本时默认人会显示相应的颜色,用来帮助排错。如果颜色干扰可以取消
:set hlsearch/nohlsearch 是否将查找的字符串显示高亮,默认高亮
:set showmode/noshowmode 设置是否在做小脚显示如”–INSTER–”之类的状态栏,默认是开启
:set ruler/noruler 设置是否显示右下角的状态栏,默认是开启
:set list/nolist 设置是否显示隐藏字符(Tab用”^I”表示,回车用”$”表示,)默认是不显示

上面的指令在命令模式只是临时生效

如果需要长期设置可以~/.vimrc中写入,默认不会有这个文件,可以新建即可

补充

Windows回车在linux下是用”^M$”显示这就导致Linux下写的脚本无法在Llinux下运行,这是可以通过命令dos2unix把Windows格式转为Linux格式,放过来就是unix2dos把Linux格式转Windows格式。者两个命令都没有安装需要手动安装

0x0114 编辑模式

0x01141 查找

/查找内容 从光标所在行向下查找
?查找内容 从光标所在行向上查找
n 下一个
N 上一个

0x01142 替换

:1,10s/old/new/g  #替换1-10行的所有old为new 不加g则只替换一次
:%s/lod/new/g    #替换整个文件中的old为New

有一个常用的 把n行将注释

:1,10s/^/#/g  注释1-10行
:1,10s/^#//g  删除注释

C++和go都是//注释

:1,10s/^/\/\//g   1-10行首加入//
:1,10s/^\/\///g   取消1-10行的//

0x012 使用技巧

0x0121 在Vim中导入其他文件和系统命令结果

:r 文件名  把文件内容导入光标位置
:!命令 #这样会暂时退出Vim直接显示结果
:r !命令 #可以把运行结果导入到光标位置

0x0122 设定快捷键

:map 快捷键 快捷键命令   #自定义快捷键
例如
:map ^P I#<ESC>  #按住"Ctrl+P"时,在行首加入注释
:map ^B ^x  #按住"Ctrl+b"时,删除行首第一个字母(删除注释)
注意:^B并不是打出来的而是 Ctrl+B出来的

永久生效还是要写入Vim配置文件

0x0123 字符串替换

:ab 原字符  替换字符   #注意原子符最好不要太短。
例如
:ab mail xxx@qq.com 

0x0124 多文件同时打开

#vim -o abc bdc  同时打开文件
-o 上下分屏
-O 左右分屏