vim 是 “vimsual interface IMproved”的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的

vim 不是一个排版程序,它不像MS Word 或 WPS 那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序

vim 是全屏幕文本编辑器,它没有菜单,只有命令

1. Vim编辑器的模式

  • 1)命令行模式
  • 2)输入模式、编辑模式
  • 3)末行模式
  • 4)替换模式

2. 命令行模式

存盘 ZZ 保存退出
光标移动:
移动光标 h j k l 左 下 上 右
光标移到本行开头home
移到本行末尾 end
光标移到末尾 G
光标移到开头gg
光标移动一个单词w
粘贴复制:
复制一行 yy 复制 n行 nyy
粘贴 p
删除:
删除字符 x 向后删除 X 向前删除
删除一行 dd ndd
删除一个单词 dw
撤销:
撤销操作 u 向上一步 . 重复上一次操作
查找:
查找/string define \ 转义字符 查找“/bin/bash” /\/bin\/bash
删除与修改
“编辑”是指文字的添加、修改以及删除,甚至包括文字区块的移动、复制等。
在vim 中一般认为输入与编辑是两个概念。
编辑是在命令模式下进行的,先利用命令移动光标来定位到要进行编辑的地方,然后再使用相应的命令进行编辑;而输入是在插入模式下进行的。
在命令模式下常用的编辑命令:
x 删除光标所在字符。
dd 删除光标所在的行。
r 修改光标所在字符,r 后是要修正的字符。
R 进入替换状态,输入的文本会覆盖原先的资料。
s 删除光标所在字符,并进入输入模式。
S 删除光标所在的行,并进入输入模式。
cc 修改整行文字。
u 撤消上一次操作。
. 重复上一次操作。

3. 编辑模式

输入模式
在输入模式下,屏幕的左下方会出现INSERT 字样。
在输入状态下,用户可以输入文本的内容
在插入模式下也可以删除字符,而标准的vim 编辑器在编辑状态下不能删除字符,只能插入字符
如何从命令行模式进入输入模式
a 从光标所在位置后面开始输入资料,光标后的资料随增加的资料向后移动。
A 从光标所在行最后面的位置开始输入资料。
插入(insert)
i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
I 从光标所在行的第一个非空白字符前面开始插入资料。
开始(open)
o 在光标所在行下新增一行并进入输入模式。
O 在光标所在行上方新增一行并进入输入模式。
如何退出输入模式
esc

4. 末行模式

末行模式
只要在命令模式下输入命令“:”即可进入末行模式。
在末行模式下,可以进行保存文件、退出vim、进行查找和替换等操作。
:
当同时编辑多个文件时 因为同一时间只能显示一个文件,所以在VI中切换打开的文件可以使用N或n来切换打开的文件
:n 切换下一个文件
:N 切换上一个文件
:q 退出
:q! 强制退出不保存
:w
:wq
替换
:s/old/new 只替换光标所在行的第一个old string
:s/old/new/g 将本行(光标)的所有old string替换为new string g global n代表一个行号
:%s/old/new/g 将本文中所有的old string替换为new string
:1,2s/old/new/g 替换1到2行中的old string为new string
:.,2s/old/new/g .代表光标所在行 当前行到第二行的
:2,$s/old/new/g 替换2到最后一行中的old string为new string
:set nu 显示行号
:set nonu
:!command 在vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令)
查找
/string 将光标定位到string 所在的行。
?string 将光标移动到最近的一个包含 string 字符串的行
:n 把光标定位到文件的第n 行。
保存文档
可以用:n,mw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。

5. 替换模式

命令行下按R键进入替换模式
退出
esc

6. 相关配置文档

~/.viminfo vim历史编辑文档

~/.vimrc vim个性设置文档

自定义文件头注释 ~/.vimrc
autocmd BufNewFile *.py,*.sh,*.c exec ":call SetTitle()"
func SetTitle()
if &filetype == 'python'
call setline(1,"\#!/usr/bin/env python")
call append(line("."),"\#enconding=utf-8")
call append(line(".")+1, "\#Author: Bai Shuming")
call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
call append(line(".")+3, "")
elseif &filetype == 'sh'
call setline(1,"\#!/usr/bin/env bash")
call append(line("."),"\#enconding=utf-8")
call append(line(".")+1, "\#Author: Bai Shuming")
call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
call append(line(".")+3, "")
elseif &filetype == 'c'
call setline(1,"#include ")
call append(line("."), "")
endif
endfunc

  

Linux上天之路(七)之Vim编辑器的更多相关文章

  1. Linux上天之路系列目录

    Linux上天之路系列目录 Linux上天之路(一)之Linux前世今生 Linux上天之路(二)之Linux安装 Linux上天之路(三)之Linux系统目录 Linux上天之路(四)之Linux界 ...

  2. linux系统中如何进入退出vim编辑器,方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了.偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致强 ...

  3. [转] linux系统中如何进入退出vim编辑器,方法及区别

    原文链接:http://www.cnblogs.com/crazylqy/p/5649860.html 在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触 ...

  4. 【转】linux系统中如何进入退出vim编辑器,方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...

  5. 小白的python之路10/30 vim编辑器

    1.vim进入命令行之后的编辑过程

  6. 【Linux入门学习之】vi/vim编辑器必知必会

    vi 在当前打开的文件内容中翻页:PageUp.PageDown 一.我们为什么要学习vim编辑器? Linux的命令行界面下面有非常多的文本编辑器.比如经常听说的就有Emacs.pico.nano. ...

  7. Linux实操篇 vi和vim编辑器

    vi和vim的基本介绍 所有的Linux系统都会内建vi文本编辑器. vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等 ...

  8. linux系统中如何进入退出vim编辑器的方法及区别

    在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...

  9. Linux学习之十三-vi和vim编辑器及其快捷键

    vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...

随机推荐

  1. Grafana 任意文件读取漏洞 (CVE-2021-43798)学习

    漏洞概述 Grafana是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告. Grafana 的读取文件接口存在未授权,且未对 ...

  2. Java中的对于多态的理解

    一.什么是多态 面向对象的三大特性:封装.继承.多态 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 实现多态的技 ...

  3. 『学了就忘』Linux服务管理 — 79、源码包安装的服务管理

    目录 1.源码包服务的启动管理 2.源码包服务的自启动管理 3.让源码包服务被服务管理命令识别 1.源码包服务的启动管理 # 通过源码包的安装路径,找到该服务的启动脚本, # 也就是获得该服务的启动脚 ...

  4. 搭建直接通过CPU执行汇编语言的环境

    搭建直接通过CPU执行汇编语言环境 我们通过编译写好的汇编语言代码可以生成.bin的机器语言二进制代码.但是这个.bin程序我们该如何运行呢? 这里其实有两个办法: 1: 将其作为一个Windows/ ...

  5. CF581B Luxurious Houses 题解

    Content 一条大街上有 \(n\) 个房子,第 \(i\) 个房子的楼层数量是 \(h_i\).如果一个房子的楼层数量大于位于其右侧的所有房屋,则房屋是豪华的.对于第 \(i\) 个房子,请求出 ...

  6. CF1292B Aroma's Search 题解

    Content 给定一个坐标系,已知第一个点的坐标为 \((x_0,y_0)\),第 \(i(i>0)\) 个点的坐标满足这样的两个递推式:\(x_i=a_xx_{i-1}+b_x,y_i=a_ ...

  7. Python3 中bytes数据类型深入理解(ASCII码对照表)

    bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...

  8. JS获取url中query_str JavaScript RegExp 正则表达式基础详谈

    面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...

  9. 使用iframe内嵌PC网站实现高度自适应

    加个样式 <style> iframe { display: block; border: none; height: 90vh;/*设置高度百分比,一直调到只有一个滚动调为止*/ wid ...

  10. Android NDK开发篇:如何使用JNI中的global reference和local reference

    JNI提供了一些实例和数组类型(jobject.jclass.jstring.jarray等)作为不透明的引用供本地代码使用.本地代码永远不会直接操作引用指向的VM内部的数据内容.要进行这些操作,必须 ...