linux下Vi/Vim编辑器操作

news/2024/7/21 13:11:16 标签: vim, 编辑器, linux

Linux中运行的文本编辑器很多,每个人喜欢的也不一样。但是不同的Linux发行版一定会内置Vi编辑器,其它编辑器可能不会内置,需要自己安装。所以必须学会Vi的使用,以应对在不同的的Linux环境中文本的编辑。Vim编辑器是Vi编辑器的升级版,功能比Vi强大,并且兼容Vi的操作(本文只记录个人学习笔记,如有不对的地方请指正)

Vi编辑器有三个模式,分别是指令模式、插入模式和命令行模式。打开Vim时,首先进入指令模式,此模式下可以进行光标移动、删除、复制等操作;通过"i、I、a、A、o、O"六个指令进入插入模式,“r、R”两个指令进入替换模式,插入和替换模式是进行文本内容的插入修改,按下ESC键退出到指令模式;通过“:,/,?”进入命令行模式,此模式下进行查找替换、保存推出、文件读取等操作,按下ESC键退出到指令模式。插入模式与命令行模式不能互相切换,只能退出到指令模式在进行切换。

一、文件打开、关闭和保存

1、vi filename [...]

在Terminal中输入上面的命令打开文件。Vi后面可以跟多个文件名同时打开多个文件。如果打开filename文件不存在,则创建名为filename的文件。

2、按下“:”进入命令行模式,通过“q,w,!”三个命令进行文件的保存退出。

:q#不保存退出文件

:q!#不保存修改强制退出(!是强制退出的意思,不需要用户确认)

:w#保存

ZZ#快捷键,保存并退出

:w newfilename#另存为newfilename并退出

:n1,n2 w newfilename#将文件的第n1行到n2行的内容另存为名为newfilename的新文件

:wq#保存并退出

拓展:

:wq   强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
:x    写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

在编程方面,对编辑源文件可能会产生重要影响,":wq"强制更新文件的修改时间,就得重新编译链接生成可执行文件,会产生不必要的系统资源花销。

3、在命令行模式下可以通过“r,e”两个命令打开新文件。

 :r filename#将filename的内容追加到正在编辑的文件末尾

:e filename#在打开Vim编辑器时未指定文件,则可通过此命令打开filename文件进行编辑

4、定位
   :set nu                        #设置行号
   :set nonu                       #取消行号
    gg                          #光标移到第一行
    G                           #光标移到最后一行
    nG                           #光标移到第n行
    :n                            #光标移到第n行
    $                             #光标移到行尾
    0                             #移到行首

5、删除
      x                         #删除光标所在处字符
      nx                        #删除光标所在处后n个字符
      dd                        #删除光标所在行
      ndd                         #删除n行(从当前光标所在行向后数n行)
      dG                          #删除光标所在行到文件末尾内容
      D                         #删除光标所在处到行尾内容
      :n1,n2d                      #删除指定范围的行

6、复制和剪切
       yy                       #复制当前行
       nyy                        #复制当前行以后n行
       dd                          #剪切当前行
       ndd                       #剪切当前行以下n行
       p、P                      #粘贴在当前光标所在行下或行上

7、替换和取消
       r                        #取代光标所在处字符
       R                           #从光标所在处开始
       u                           #取消上一步操作

8、搜素和搜素替换
       /string                  #搜索指定字符串
        :set ic                 #忽略大小写
        :setnoic                  #不忽略大小写
        n                          #搜索指定字符串的下一个出现位置
         :%s/old/new/g           #全文替换指定字符串
         :n1,n2s/old/new/g        #在一定范围内替换指定字符串

常见用法:
1. 删除以#号开头的行:
   :g/^#/d
   :%s/^#.*\n

2. 删除以空格开头的行:
   :g/^\s/d                “\s代表空格”
   :%s/^\s.*\n

3. 删除以空格#开头的注释行:
   :g/^\ .*#/d             “(.*)代表若干”
   :%s/^\s.*#.*\n//g

4. 删除空白行:
   :g/^$/d
   :g/^\s*$/d               “删除由空格组成的行”
   :g/^[\s|\t]*$/d          “删除由空格或tab键开头到结尾的行”
   :g/^[ |\t]*$/d          “删除由空格或tab键开头到结尾的行”

5. 删除行首空格:
   :%s/^\s\+                “\+代表一个或多个\s”

6. 删除行末空格:
   :%s/\s\+$            

7. 加#注释所有行:
   :%s/^/#/g

8. 查找注释掉的CONFIG:
   /^#.*CONFIG.*$


http://www.niftyadmin.cn/n/1139903.html

相关文章

用NDK构建osg库到Android 平台几点经验

转自 http://blog.csdn.net/giantchen547792075/article/details/17660511 在pc端osg已经证明了他的实力了,大量的扩展项目、严格的跨平台。在移动端目前还没有一个很好的3D开源框架可以使用,开发者需要从0开始写很费事,构建这样一个平台也非…

linux中的nm命令简介

binutil里的工具中比较好用的有nm strip strings strings这个命令能读取串,但我看到好多代码里面都是写死了密码,如果直接写在代码里面, 用strings扫描一下,就出来了。 一般是放在数据库中, 且加密。 要用的时候&…

Linux中文件搜索命令介绍

1、find 命令所在路径:/bin/find find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作(find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件)…

Andorid Studio NDK开发-编译OpenSSL类库

OpenSSL是一个强大的开源安全套接字层密码库,它包含了主要的密码学算法,常用的密钥和证书封装管理以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。在Android上开发对于安全的需求越来越高,虽然OpenSSL出现过几次漏洞,但它…

linux内核源码基础

linux内核体系结构 说到操作系统,我们都会知道windows操作系统,linux操作系统,苹果的ios操作系统,以前很火的塞班操作系统,还有最近消费类电子很火的android操作系统。一个完整的操作系统分为4个部分。 可以把这个理解…

SELinux分析

1. 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它…

Android.mk,安卓系统AOSP源码

学习Android.mk可以参考安卓系统源码当中的一些mk文件 例如,build/core目录下的base_rules.mk和config.mk base_rules.mk ifdef base-rules-hook $(if $(base-rules-hook),) endif ########################################################### ## Common instr…

Linux之iptables详解

一、netfilter与iptables (1)Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Netwo…