zoukankan      html  css  js  c++  java
  • VIM 三种模式和常用命令

    引言

    大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:VIM 酷!你说这么牛X的一东西,怎么着学会也得小半年吧。告诉你,半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!

    VIM 介绍

    vim/vi 是 Unix / Linux 上最常用的文本编辑器而且功能非常强大。

    特点:只有命令,没有菜单

    VIM 的三种模式

    基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和编辑模式(Last line mode)。

    命令模式:

    用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符

    • x 删除当前光标所在处的字符

    • : 切换到编辑模式,以在最底一行输入命令

    若想要编辑文本:启动 Vim,进入了命令模式后,按下i(或a/o)键,切换到插入模式

    命令模式只有一些最基本的命令,因此仍要编辑模式输入更多命令。

    插入模式

    在命令模式下按下 i (或a/o)就进入了插入模式

    在插入模式中,可以使用以下按键:

    • 字符按键以及Shift组合,输入字符

    • ENTER,回车键,换行

    • BACK SPACE,退格键,删除光标前一个字符

    • DEL,删除键,删除光标后一个字符

    • 方向键,在文本中移动光标

    • HOME/END,移动光标到行首/行尾

    • Page Up/Page Down,上/下翻页
      I

    • insert,切换光标为输入/替换模式,光标将变成竖线/下划线

    • ESC,退出输入模式,切换到命令模式

    编辑模式

    在命令模式下按下:(英文冒号:)就进入了编辑模式。

    编辑模式可以输入单个或多个字符的命令(可用的命令非常多)

    在编辑模式中,基本的命令有(已经省略了冒号):

    • q 退出程序

    • w 保存文件

    按 ESC 键可随时退出编辑模式

    VIM 常用命令

    插入命令

    命令 作用
    a 在光标后附加文本
    A(shift + a) 在本行行末附加文本 行尾
    i 在光标前插入文本
    I(shift+i) 在本行开始插入文本 行首
    o 在光标下插入新行
    O(shift+o) 在光标上插入新行

    定位命令

    命令 作用
    :set nu 设置行号
    :set nonu 取消行号
    gg G 到第一行 到最后一行
    nG 到第n行
    :n 到第n行

    保存和退出命令

    命令 作用
    :w 保存修改
    :w new_filename 另存为指定文件
    :w >> a.txt 内容追加到a.txt文件中 文件需存在
    :wq 保存修改并退出
    shift+zz(ZZ) 快捷键,保存修改并退出
    :q! 不保存修改退出
    :wq! 保存修改并退出(文件所有者可忽略文件的只读属性)

    注意事项:

    不保存并退出:

    1. 有修改,但是修改后的内容是不保存的

    2. 有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件

    删除命令

    命令 作用
    x 删除光标所在处字符 nx 删除光标所在处后n个字符
    dd 删除光标所在行,ndd删除n行
    :n1,n2d 删除指定范围的行(eg :1,3d 删除了123这三行)
    dG 删除光标所在行到末尾的内容
    D 删除从光标所在处到行尾

    复制和剪切命令

    命令 作用
    yy、Y 复制当前行
    nyy、nY 复制当前行以下n行
    dd 剪切当前行
    ndd 剪切当前行以下n行
    p、P 粘贴在当前光标所在行下 或行上

    替换和取消命令

    命令 作用
    r 取代光标所在处字符
    R(shift + r) 从光标所在处开始替换字符,按Esc结束
    u undo,取消上一步操作
    ctrl+r redo,返回到undo之前

    搜索和替换命令

    命令 作用
    /string 向后搜索指定字符串 搜索时忽略大小写 :set ic
    ?string 向前搜索指定字符串
    n 搜索字符串的下一个出现位置,与搜索顺序相同
    N(Shift + n) 搜索字符串的上一个出现位置,与搜索顺序相反
    :%s/old/new/g 全文替换指定字符串 (% 指全文,s 指开始,g 指全局替换)
    :n1,n2s/old/new/g 在一定范围内替换指定字符串

    起始行,终止行 s/ 要替换的字符串/替换的新的字符串 /g c 询问确认

    eg: :%s/ftp/yang/g 全局替换,把ftp替换为yang

    eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换

    eg: :41,44/yang/lee/g 同上,不询问,直接替换

    eg: :%s//root//ROOT/g 把/root替换为/ROOT

    eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替换为/bin/ksh

    使用替换命令来添加删除注释

    :% s/^/#/g 来在全部内容的行首添加 # 号注释

    :1,10 s/^/#/g 在1~10 行首添加 # 号注释

    vi里面怎么查命令??

    :!which cp

    vi里面怎么导入命令的结果?

    :r !which cp

    可视化模式

    • v (可视字符模式)
    • V(shift+v) (可视行模式,选择多行操作)
    • ctrl+v (可视块模式或列模式,用于操作列)
    • I 或者 O (进入插入模式)
    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Docker 安装NGINX
    Ant 使用setFieldsValue更新Form表单值
    SpringSecurity设置角色和权限
    java 获取昨天、今天、明天的时间
    Ubuntu 20.04 root ssh登录配置
    http: server gave HTTP response to HTTPS client解决方案:
    06-多线程笔记-2-锁-3-Lock
    05-多线程笔记-2-锁-2-Synchronized
    04-多线程笔记-2-锁-1-死锁
    volatile
  • 原文地址:https://www.cnblogs.com/binbingg/p/13909060.html
Copyright © 2011-2022 走看看