• vi/vim


    img
    img

    vi/vim

    打开文件

    vim [option] .... file....

    • +# 直接定位到第#行
    • +/pattern 打开文件后,直接定位到第一个匹配到patter的地方
    • -b 以二进制方式打开文件
    • -d file1 file2 对比打开多个文件
    • -m file 只读方式打开文件
    • -e 直接以末行模式打开

    打开文件会生成一个.file_name.swp隐藏文件。

    模式

    • 命令模式:可以光标,可以粘贴、复制文本,默认模式
    • 插入模式或者编辑模式(INSERT):可以修改文本
    • 末行模式(扩展命令模式):保存、退出等等
    • esc 退出当前的模式

    模式之间切换

    • 命令模式- 插入模式

      • i 光标所在处插入

      • I 在当前光标所在的行的行首插入

      • a 光标所在位置的后面插入

      • A 在当前光标所在的行尾插入

      • o 在当前光标所在的行的下一行(新开)插入

      • O 在当前光标所在的行的上一行(新开一行)插入

    • 插入模式- 命令模式

      • esc
    • 命令模式 -- 末行模式

    • 末行模式 -- 命令模式

      • esc
      • enter

    关闭文件

    • 末行模式

      • :w 保存
      • :q 退出
      • :wq 保存并退出
      • :q! 强制退出
      • :wq!强制保存退出
      • :x 保存并退出
      • r file 读入file文件
      • w file 另存为file
      • !command 直接执行命令,如!whoami!pwd
      • r!command 直接把命令的结果写到文件中
    • 命令模式

      • ZZ 保存退出
      • ZQ 不保存退出

    命令模式跳转

    • 字符之间跳转
      • l 向右
      • h 向左
      • k 向上
      • j 向下
    • 单词间跳转
      • w 下一次的单词的词首
      • e 当前词的词尾或者下一个单词的词尾
      • b 当前词的词首或者上一词的词首
      • #command 直接跳转#个单词,command可以是w/e/b
    • 页面间跳转
      • H 页首
      • L 页尾
      • M 页中
      • zt 将光标所在行移动到屏幕的顶端
      • zb 将光标所在行移动到屏幕的底部
      • zz 将光标所在行移动到屏幕的中间
    • 行首行尾之间跳转
      • ^ 跳转到当前光标所在行的第一个非空字符
      • 0(数字) 跳转到行首
      • $ 跳转到行尾
    • 行间移动
      • #G 跳转到第#行
      • 在命令扩展模式下,直接`:#`跳转到对应#的行
      • G 直接到最后一行
      • gg 跳转到第一行,同1G
    • 段落之间跳转(跳转至段落之间的空行开头处,有空行才算段落)
      • { 上一段
      • } 下一段
    • 翻屏
      • ctrl+f 向文件尾部翻一屏
      • ctrl+b 向文件首部翻一屏
      • ctrl+d 向文件尾部翻半屏
      • ctrl+u 向文件首部翻半屏

    命令模式编辑

    字符编辑
    • x 删除光标所在处的字符
    • #x 删除#个字符
    • xp 将光标所在处的字符和后面的字符互换位置
    • ~ 将光标所在的位置大小写互换
    • J 用空格替换当前行的换行符
    替换
    • r 替换当前光标所在处的字符
    • R 进入替换模式(REPLACE)
    删除
    • d 删除,需要跟字符跳转结合
    • d$ 删除到行尾,删除当前位置
    • d0 删除到行首,当前位置不删除
    • d^ 删除到非空字符
    • dw 删除一个单词
    • de 向后删除一个单词
    • db 向前删除一个单词
    • dd 删除正行
    • #dd 删除#行
    • dG 删除到结尾
    • dgg 删除到开头
    • D 相当于d$
    复制
    • y 也可以跟字符跳转结合
    • y$
    • y0
    • y^
    • yw
    • ye
    • yb
    • yy 复制一正行
    • #yy 复制#行
    • yG 复制到结尾
    • ygg 复制到开头
    • Y 复制整行
    粘贴
    • p(小写) 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
    • P(大写) 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
    改变

    删除以后并将模式切换成插入模式

    • c 可以跟光标的跳转做结合
    • c$
    • c0
    • c^
    • cw
    • ce
    • cb
    • #command
    • cc 删除正行并插入
    • C 相当于c$
    • #[i|I|a|A|o|O]string esc 将string粘贴#次
    搜索
    • /pattern 从当前光标往下搜索
    • ?pattern 从当前光标往上搜索
    • n 同命令相同的方向
    • N 同命令相反的方向
    撤销
    • u 撤销最近的修改
    • #u 撤销最近的#次修改
    • ctrl+r 撤销之前的撤销动作
    • . 重复最后一次操作
    • #. 最后一次操作重复执行#次
    可视化
    • v 面向字符()
    • V 面向行的(VISUAL LINE)
    • ctrl +v 面向块(VISUAL BLOCK)
    • 可以结合所有的跳转键进行结合
    • 对突出显示部分可以使用删除(d)、复制(y)、变更(c)、过滤、替换、另存为等等

    扩展命令模式

    地址定界
    • :start,end 如:1,3d删除1-3行。

    • # 具体到第#行

    • #,# 第#行到第#行

    • #,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3

    • . 表示当前光标所在的行

    • $ 表示最后一行

    • $-1 表示倒数第二行

    • % 表示全文

    • /pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方。用正则写匹配。

    • #,/pat/ 从第#行开始,到第一次被pat匹配到的地方

    • /pat/,$ 从第一次被pat匹配到的到结尾

    可以一起使用的命令

    • d
    • y
    • w file 重新另存为文件
    • r file 将文件的内容写到匹配到的下一行
    查找并替换
    • 要使用地址定界来定义找查内容查找,并使用s进入查找并替换
    • 格式:地址定界s/要查找的内容/要替换的内容/装饰器
    • 要查找的内容可以使用正则
    • 替换的内容不能为正则,但可以为分组。
      • 如:%s/(nfs.*)/#1/ ,括号需要进行转义。表示将能与nfs.*匹配的内容前加#。
      • 1 表示第一个分组内的内容。以此类推2、3等等
      • & 可以代表前面匹配到的内容。如%s/nfs.*/#&/,与上一例子相同。
    • 装饰器
      • i 忽略大小写
      • g 表示全部替换
      • gc 每一次替换之前都要询问是否替换
    • 分隔符不止可以用/还可以使用@#

    打开多个文件

    vim file1 file2 file3 …,打开后进入扩展命令模式:

    • :next 下一个

    • :prev 上一个

    • :first 第一个

    • :last 最后一个

    • :qall 退出全部

    • :wall 保存全部

    • :wqall 保存并退出全部

    • :xall 保存并退出全部

    多个窗口打开多个文件

    vim -o file1 file2 … 水平分隔

    vim -O file1 file2 … 垂直分隔

    切换:ctrl+w+上下左右箭头

    单文件切割

    • ctrl+w,s 水平切割

    • ctrl+w,v 垂直切割

    • ctrl+w,q 取消相邻的窗口

    • ctrl+w,o 取消全部窗口

    vim工作特性

    配置文件

    • 全局有效:/etc/vimrc
    • 对当前用户有效,在当前用户的根目录新建:vi ~/.vimrc

    命令扩展模式

    • 行号:set nu 取消 set nonu
    • 忽略大小写(搜索) set ic 取消set noic
    • 自动缩进(同上一行) set ai 取消set noai
    • 设置高亮显示(搜索到的内容) set hls 取消set nohls
    • 语法高亮 syntax on 取消 syntax off
    • 文件格式
      • windows格式 set fileformat=dos
      • unix格式 set fileformat=unix
      • 从windows与linux之间互传文件需要修改文件格式。
    • 添加标识线: set cul 取消标识线 set nocul
    • 获取帮助: set all
    • 获取帮助信息:
      • :help
      • :help topic
      • vimtutor
  • 相关阅读:
    android studio debug
    SharePoint 2013 单一页面赋设计权限
    sed实现文件自我复制
    iOS第三方支付集成
    移动端报表JS开发演示样例
    马化腾内部分享:产品经理的必修课
    实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
    【React全家桶入门之十】登录与身份认证
    猜拳游戏案例
    Java JDBC利用反射技术将查询结果封装为对象
  • 原文地址:https://www.cnblogs.com/wby-110/p/13451887.html
Copyright © 2020-2023  润新知