当前位置: 首页 > news >正文

鸟哥的linux私房菜学习-(十)vim程序编辑器

 

1.vi和vim

在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了!

常常听到的就有: emacs, pico, nano, joe, 与 vim 等等(注1)。

2.vi的使用

基本上 vi 共分为三种模式,分别是『一般模式』、『编辑模式』与『指令列命令模式』。 这三种模式的作用分别是:

    • 一般模式:
      以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。
    • 编辑模式:
      在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。
    • 指令列命令模式:
      在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

2.1 按键说明

  • 第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等

 

 

  • 第二部份:一般模式切换到编辑模式的可用的按钮说明

  • 第三部份:一般模式切换到指令列模式的可用的按钮说明

3.DOS 与 Linux 的断行字符

 

 因为断行字符以及 DOS 与 Linux 操作系统底下一些字符的定义不同,因此, 不建议你在 Windows 系统当中将档案编辑好之后,才上传到 Linux 系统,会容易发生错误问题。 而且,如果你在不同的系统之间复制一些纯文本档案时,千万记得要使用 unix2dos 或 dos2unix 来转换一下断行格式啊!

 

重点回顾

  • Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑;
  • vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字;
  • vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速;
  • vi 有三种模式,一般模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换;
  • 常用的按键有i, [Esc], :wq 等;
  • vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式;
  • 数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 行之意;
  • 光标的移动中,大写的 G 经常使用,尤其是 1G, G 移动到文章的头/尾功能!
  • vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来;
  • 小数点『 . 』为重复进行前一次动作,也是经常使用的按键功能!
  • 进入编辑模式几乎只要记住: i, o, R 三个按钮即可!尤其是新增一行的 o 与取代的 R
  • vim 会主动的建立 swap 暂存档,所以不要随意断线!
  • 如果在文章内有对齐的区块,可以使用 [ctrl]-v 进行复制/贴上/删除的行为
  • 使用 :sp 功能可以分割窗口
  • vim 的环境设定可以写入在 ~/.vimrc 档案中;
  • 可以使用 iconv 进行档案语系编码的转换
  • 使用 dos2unix 及 unix2dos 可以变更档案每一行的行尾断行字符。

 

转载于:https://www.cnblogs.com/wenlin66/p/8404398.html

相关文章:

  • Linux上vi编辑文件非正常退出后文件恢复
  • 常用网络技术
  • javascript脚本混淆
  • gf框架之grpool - 高性能的goroutine池
  • 谷歌浏览器如何调试JS
  • CocosCreator引擎修改与定制
  • 新年的展望,2018 hello world~
  • Collection---CopyOnWrite(应用于大量度 而少量写的场景)
  • 模块使用
  • 16、sockect
  • USACO 2006 NOV Corn Fields
  • 存储快照实现原理
  • 软件需求模式阅读笔记1
  • centos6之前版本的启动流程
  • django 之 用户忘记密码的解决办法
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017 年终总结 —— 在路上
  • C++入门教程(10):for 语句
  • CSS 提示工具(Tooltip)
  • Javascript编码规范
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • mysql常用命令汇总
  • Spring声明式事务管理之一:五大属性分析
  • tensorflow学习笔记3——MNIST应用篇
  • Vue 重置组件到初始状态
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 关于字符编码你应该知道的事情
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深入浅出Node.js
  • 数组的操作
  • 微信小程序开发问题汇总
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 智能合约Solidity教程-事件和日志(一)
  • 白色的风信子
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #HarmonyOS:Web组件的使用
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (4)logging(日志模块)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (小白学Java)Java简介和基本配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net core 依赖注入的基本用发
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • @SentinelResource详解
  • [Android] Amazon 的 android 音视频开发文档
  • [Android]Android开发入门之HelloWorld
  • [Angular] 笔记 6:ngStyle