• 【Linux】 vi / vim 使用


    天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。

    vi / vim 发展史

    vi

    是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器

    vim

    Vim是一个类似于Vi的高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。Vim是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线。

    Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

    Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。

    vim 和 vi 都是一个文本编辑器不只linux的命令。

    Linux通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了,如下图所示:

    输入:vim

    退出输入  :q 

    是不是很一样。哈哈。

    vim使用

    注意1

    不要使用 vim 打开大文件, vim 会一次性读取所有内容到内存,容易造成宿主机内存溢出,打开文件前查看文件大小。一般不要超过100MB 。

    使用vim打开文件

    基本语法: vim 文件名称

    示例:vim test4.text

    vi是三中模式

    (不学习这个了,了解就行)

    • Command(命令)模式,用于输入命令
    • Insert(插入)模式,用于插入文本
    • Visual(可视)模式,用于视化的的高亮并选定正文
    VIM四种模式
    • Normal      正常模式
    • Insert         插入(编辑)模式
    • Command 命令模式
    • Visual        可视化模式
    Normal 正常模式

    启动vim后默认处于正常模式。不论位于什么模式,按下键(有时需要按两下)都会进入正常模式。正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。

    Insert 插入(编辑)模式

    在正常模式中按下i, I, a, A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中, 输入内容会插入到文本中。

    Command 命令模式

    在正常模式中,按下:(英文冒号)键,会进入命令模式。 在命令模式中可以设置vim一些格式,也可以进行内容查找等操作。

    Visual 可视化模式

    在正常模式中按下v, V, +v,可以进入可视模式。 可视模式主要用于选择文本内容时,可以有很直观的看到选中内容。
    可视模式有三种:


    1、字符模式: v (小写)

    2、行模式: V (大写)

    3、块模式: Ctrl+v

    移动命令

    通常使用键盘区右下角的  ↑  ↓  ←  →  

    Vim 提供了另一种方式来移动光标——使用 h、j、k、l 键来移动光标。

    • h    光标向 左 移动一个字符
    • j    光标向 下 移动一行(实际行:以换行符结束的为一行)
    • gj    光标向 下 移动一行(屏幕行:屏幕上的一行)
    • k    光标向 上 移动一行(实际行:以换行符结束的为一行)
    • gk    光标向 下 移动一行(屏幕行:屏幕上的一行)
    • l    光标向 右 移动一个字符
    • 0     到行首
    • ^      到行首第一个字符,如果前面有空格的话
    • $      到行尾
    • gg     快速到文件头
    • G     快速到文件尾
    • 100G     跳转到第100行
    • w / W    移动到下一个单词/字符串的开头( 大写是以空格为分界符)
    • e /E    移动到下一个单词/字符串的结尾
    • b/ B    移动到(上一个/当前)单词/字符串的开头
    • ge / gE    移动到(上一个/当前)单词/字符串的结尾
    • Ctrl-f    向上翻页
    • Ctrl-b    向下翻页
    • Ctrl-d    向下翻半页
    • Ctrl-u    向上翻半页
    • zz    光标所在行移动到屏幕的中间。
    • zt    光标所在行移动到屏幕的顶端。
    • zl    光标所在行移动到屏幕的底端。
    操作命令
    • y    复制 (yank)
    • yy 复制一行
    • 10yy 向下复制10行
    • yw 复制光标开始的一个单词
    • y$ 复制光标到行尾
    • yfB 复制光标到第一个大写B中间的内容
    • y2fB 复制光标到第二个大写B中间的内容
    • x 向剪切一个一个字符,如果是在行尾,则为向前剪切
    • 3x 剪切三个
    • xp 非行尾交换两个字符,如从 bs 变成 sb
    • p  粘贴(y复制完了 用p来粘贴)
    • 3p 将复制或剪切的内容粘贴三次
    • c    变更 (change)    cc :删除一行并进入插入模式
    • cw 替换文本直到单词末尾(ce也可) 语法为ncw n表示需要删除的单词个数,表示删除n个单词后进入insert模式

    • c$ 替换文本直到行尾 同cw 只是是从光标开始删除至行尾 并进入insert 模式

    • d        删除 (delete)  
    • dd:  删除一行
    • 20dd  删除20行
    • dw     删除一个单词
    • df”      删除到出现的第一个双引号
    • S        删除整行,与dd区别在于,S删除后会进入Insert模式
    • x         删除光标下的字符
    • X        删除光标左边的字符
    • ~    转换大小写    '~' 不是一个操作符,但是可以在配置文件里 "set tildeop" 将其变成一个操作符
    • g~    转换大小写(大写边小写,小写变大写)    
    • gu    将选中内容转换为小写    
    • gU    将选中内容转换为大写    
    • >    shift right (向右移动一个制表符)    >>:向右缩进当前行
    • <    shift left(向左移动一个制表符)    <<:向左缩进当前行
    • u(小写) 撤销
    • U撤销对整行的操作
    • Ctrl + r 重做(Redo),即撤销的撤销。
    保存退出
    • :wq保存并退出
    • ZZ保存并退出
    • :q!丢弃修改并退出 (q退出,有修改的话q不能退出)
    • :qa!打开多个文件时使用此命令
    查找并替换
    • :/yang  直接查找文本yang  内容
    • :/yang  表示查找yang 单词 然后 :   n 查找下一个, :N查找前一个
    • : s/old/new/g  查找old并替换为new,g代表整行匹配 替换 在进入命令行模式前 光标 所在行
    • :#, #s/old/new   #, #代表首尾行号 比如 1,3 就是1-3行 可以通过 :set nu 来显示行号
    • :%s/old/new/g  全文匹配替换
    • :%s/old/new/gc  全文匹配替换,并每次替换会弹出确认提示 c所有替换命令 加c 后会弹出确认提示
    选项设置
    • :set ic 忽略大小写
    • :set is 部分匹配(like)
    • :set hls 高亮匹配
    • :set nu 显示行号

    文件操作
    • :e +    filename打开新文件
    • :r +    filename读取文件并插入到当前文件
    • :bn   切换到下一个文件 当使用 vim file1 file2 打开多个文件时
    • :bp   切换到上一个文件
    分屏启动

    • vim -on file1 file2…  水平分屏
    • vim -On file1 file2…  垂直分屏
    • Ctrl + w =   所有屏一样高度
    • Ctrl + w +  增加高度
    • Ctrl + w -   减少高度
    • Ctrl + w c  关闭当前窗口(如果是最后一个,无法关闭) 先按ctrl +w 再按c
    • Ctrl + w q  关闭当前窗口(如果是最后一个,则退出vim) 先按ctrl +w 再按q 或者直接进入命令行模式 输入q 一个一个的关闭
       
    水平分屏   vim -on test4.text test8.text

     垂直分屏  vim -On test4.text test8.text

    Vim 有一个超级大招 那就是宏录制。今天不想写了,有空在写吧,哈哈哈哈哈。

  • 相关阅读:
    细粒度特征提取和定位用于目标检测:PPCNN
    小程序门店自提功能,提高线上线下销售量
    0基础学习PyFlink——用户自定义函数之UDTAF
    外包公司干了不到3个月,我离职了...
    解决Python调试OSError: [WinError 193] %1 不是有效的 Win32 应用程序
    一文带你浅入浅出Keepalived
    JAVA之多线程
    SourceTree安装跳过注册登录BITBUCKET步骤方法(更详细有用)
    模型推理详细步骤以及如何排查模型和参数字典对不上的问题:Missing key(s) in state_dict: xxxx
    在CentOS装个RocketMQ 然后用JAVA操作吧
  • 原文地址:https://blog.csdn.net/wochunyang/article/details/133700664