Linux学习笔记—vim程序编辑器
vi和vim
vim是vi的升级版,支持vi的所有指令
vi的使用
vi分为三种模式:一般模式、编辑模式、命令行模式
一般模式
以vi打开一个文件就直接进入一般模式了,这个模式下可以使用上下左右按键来移动光标,可以删除字符、删除整行、复制和粘贴
编辑模式
一般模式下,不能编辑文件内容。按下“i,l,o,O,a,A,r,R”等任一字母后就会进入编辑模式,按下Esc可退出编辑模式
命令行模式
在一般模式中输入“:、/,?”这三个字符的任意一个,就可以将光标移动到最下面那一行。该模式下,可以进行读取、保存、大量替换符、退出vi、显示行号等操作
vi,vim常用命令如下:
一般模式:
| Ctr+f | 屏幕下移一页(Page Down) |
| Ctr+b | 屏幕上移一页(Page Up) |
| 0或home | 移动到这一行的最前面 |
| $或end | 移动到这一行的最后面 |
| G | 移动到文件的最后 |
| gg | 移动到文件的第一行 |
| N[Enter] | 光标下移n行 |
| /word | 向下查找 |
| ?word | 向上查找 |
| n | 重复前一个查找 |
| N | 反向查找 |
|
:n1,n2s/word1/word2/g |
在第n1行和n2行之间查找word1并用word2替换 |
| :n1,n2s/word1/word2/gc | 同上,替换前给用户确认 |
| :1,$s/word1/word2/g | 第一行到最后一行,查找替换 |
| x,X | 在一行中,x为向后删除一个字符,X为向前删除一个字符 |
| dd | 删除光标所在一行 |
| ndd | n为数字,删除光标所在的向下n行(包括本行) |
| yy | 复制光标所在的一行 |
| nyy | n为数字,复制光标所在的n行 |
| p,P | p复制在光标的下一行,P复制在光标的上一行 |
| u | 复原前一个操作 |
| Ctrl+r | 重做上一个操作 |
| . |
小数点,重复前一个操作 |
一般模式切换到编辑模式的可用按钮说明:
| i,l | i为从目前光标处插入,l为在目前光标所在行的第一个非空字符处开始插入 |
| a,A | a为从光标所在的下一个字符插入,A为从光标所在行的最后 一个字符处插入 |
| o,O | o为在光标的下一行插入,O为在光标的上一行插入 |
| r,R | 进入替换模式,r只会替换一次光标所在的那个字符,R会一直替换下去 |
命令行模式:
| :w | 保存 |
| :w! | 强制保存 |
| :q | 离开vi |
| :q! | 强制离开不保存 |
| :wq | 保存后离开 |
| :w [filename] | 另存为filename |
| :r [filename] | 编辑数据时,读入另一个文件数据,数据放在光标所在的下一行 |
| :n1,n2 w [filename] |
保存n1到n2行的数据到文件filename |
| :set nu | 显示行号 |
| :set nonu | 取消行号 |
vim的保存文件、恢复与打开时的警告信息
vim在编辑文件时,会创建一个.filename.swap文件保存操作记录。
当vim编辑文件过程遭到意外时,该暂存文件不会消失。此时打开原文件可能显示如下:

E325: ATTENTION
Found a swap file by the name ".test2.txt.swp"
owned by: root dated: Thu Jun 30 19:32:14 2016
file name: /tmp/wuchao_test/test2.txt
modified: YES
user name: root host name: localhost.localdomain
process ID: 12201
While opening file "test2.txt"
dated: Mon Jun 27 13:25:27 2016 (1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r test2.txt"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".test2.txt.swp"
to avoid this message. Swap file ".test2.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

当vim一个文件时,如果检测到文件对应的暂存文件,就会显示以上信息,这时可以进行以下操作:
[O]:打开此文件为只读
[E]:以正常方式打开文件
[R]:加载暂存文件内容,救回之前未保存的内容
[D]:删除暂存文件
[Q]:退出
[A]:退出
vim的功能
vim除了具有以上vi的功能以外,还有自己的一些指令。
块选择
| v | 字符选择 |
| V | 行选择 |
| Ctr+v | 块选择 |
| y | 将选择部分复制 |
| d | 将选择部分删除 |
多文件编辑
| :n | 编辑下一个文件 |
| :N | 编辑上一个文件 |
| :files | 列出目前这个vim的打开文件 |
举例:
/tmp/wuchao_test/下有两个文件,分别为inittab和hosts,现要将hosts文本的部分内容复制到inittab文件内去,操作如下:

[root@localhost wuchao_test]# vim ./inittab ./hosts #
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# ~
~
:files
1 %a "./inittab" line 1
2 "./hosts" line 0
Press ENTER or type command to continue

在vim内输入“:file”可以查看目前编辑的文件,输入“:n”可以在多个文件内切换。
多窗口功能
设想我们需要编辑一个很大的文件时,我们想在一个文件内前后对照,或者多个文件对照时,如果通过上下翻页或者不停切换vim打开的文件,那也太麻烦了。vim提供了一个多窗口功能。
vim打开一个文件后,可以使用:sp [filename] 开启一个窗口打开另一个文件,如果打开本文件,直接输入:sp,可以使用Ctr+w+上下箭头 来切换窗口,Ctr+w+q退出当前窗口,:q也可以。
Linux学习笔记—vim程序编辑器的更多相关文章
- linux/linux学习笔记-vim文本编辑器(mooc)
vim文本编辑器 vim与vi的区别:( vim=vi +IMproved) VIM是一个Unix以及类unix文本编辑器 特点:功能强大,高度可定制 vim编辑器的三种模式:一般模式.编辑模式和命令 ...
- Linux学习笔记(四) vi编辑器
一.vi 编辑器 vi 编辑器 (Visual Interface) 是所有 Unix 及 Linux 系统下标准的编辑器,相当于 Windows 系统中的记事本 它有三种模式,分别是: Comman ...
- CentOS学习笔记--vi程序编辑器
vi程序编辑器 Linux里经常需要修改一些配置文件,这时就需要一个编辑器,几乎所有的Linux版本都提供了vi这个编辑器. 文件内容查阅cat命令 如果我们要查阅一个文件的内容时,该如何是好呢?这里 ...
- Linux学习笔记--vim
Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. vim的三种模式 命令模式(Command mode),输入模式(Insert m ...
- Linux学习笔记13—Vi编辑器的学习
文本编辑工具vim.vi1. vim与vi的最大区别是vim编辑的时候是带颜色显示的.Vi不带颜色显示.2. yum install -y vim-enhanced 如果没有安装VIM 使用上面的命令 ...
- Linux学习笔记(一) 文件系统
对于每一个 Linux 学习者来说,了解 Linux 文件系统的结构是十分有必要的 因为在 Linux 中一切皆文件,可以说只有深入了解 Linux 的文件系统,才会对 Linux 有更深刻的理解 L ...
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
随机推荐
- 关于 web中 使用 java.net.URLEncoder.encode 要编码两次呢 , js的encodeURIComponent 同理
因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的原始编码格式(ISO-8859-1)自动 ...
- django模板{%for%}中的forloop的应用
{% for k, v in data.items %} {{ k }}: {{ v }} {% endfor %} 这里假设data.items这个列表类似:[ [a,b],[c,d],[e,f]. ...
- Tensorflow之合并tensor
https://www.tensorflow.org/versions/r0.12/api_docs/python/array_ops.html#concat 例子: t1 = [[1, 2, 3], ...
- Java反射机制的作用?
Java反射机制的作用? 解答:Java反射机制的作用是: 1)在运行时判断任意一个对象所属的类. 2)在运行时构造任意一个类的对象. 3)在运行时判断任意一个类所具有的成员变量和方法. 4)在运行时 ...
- 网页(aspx)与用户控件(ascx)交互逻辑处理实现
几个页面(ASPX)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ASCX)上.现需要处理逻辑如下 搜索事件处理的逻辑在各个页面处理. ...
- Android上传图片(PHP服务器)
原理 Android客户端模拟一个HTTP的Post请求到服务器端,服务器端接收相应的Post请求后,返回响应信息给给客户端. PHP服务器 <?php move_uploaded_file($ ...
- ZeroMQ一个更小、更快、更简单的智能传输层协议
这个githube上的教程是非常好的,是个中文翻译,大家直接学这个就行 https://github.com/anjuke/zguide-cn/tree/master/bin 原文地址: https: ...
- Ubuntu中su认证失败
Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许 su 到 root 解决方法 sudo -i,输入当前用户密码后以root权限登录shell,无时间限制.使用exit或logo ...
- Android 7.1.1 锁屏界面启动流程
前几天遇到一个低概率复现锁屏界面不显示,仅仅显示状态栏的问题,跟了下锁屏界面启动显示的流程,在这分享下,也方便以后自己查看.前面简介了下Zygote启动流程, Zygote进程启动后会首先创建一个Sy ...
- HDU 5892 Resident Evil
题目链接:传送门 题目大意:有50种动物,给你n*n的矩阵,m次操作,P代表加入操作,在左上角 x1,y1 到右下角 x2,y2,的矩形范围内加入 种类为x,数量为y的动物. Q代表询问操作,在左上角 ...