导读 Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
一、vi、vim介绍

(1)基于图形界面,如gedit、geany等;
(2)基于命令行,如nano、vi、joe等;

每个命令行界面的文本编辑器都有各自不同的快捷键,比如nano的保存为CTRL+W,vim的保存为:w;
基于命令行的文本编辑器是必要的,Linux的tty1~tty6都是命令行界面,是打不开图形界面的文本编辑器的;
vi是每个Linux Distribution都默认安装的文本编辑器,并且很多软件的默认编辑器都是vi,因此学习vi是很必要的;
vim是vi的高级版本,vi是文本编辑器,而vim应该说是程序编辑器,因为能够像一般的IDE一样,根据文件名载入不同的语法高亮,即颜色区分,比如java文件会遵循java的语法高亮;

下面我们就编写一个"hello world"的java程序来看看vim的语法高亮;

可以看出vim有很好的语法检查功能,因为关键字都使用了不同的颜色标出;
vi有三种模式:

(1)一般模式:进入vi的默认模式,能够进行复制、黏贴、删除等操作;
(2)编辑模式:从一般模式按下‘i’即可进入;
(3)命令行模式:从一般模式按下“:”、'?'、'/'即可进入;

注意:如果安装了vim后,输入vi后也是使用vim编辑器,我们输入alias后看到“alias vi='vim'”;

二、vi/vim按键
“一般模式”的常用按键:
“一般模式”的常用按键 按键含义
h 向左
J 向下
K 向上
l 向右
20h 向左20个字符
20j 向下20行
20k 向上20行
20l 向右20个字符
Page Up 向上翻页
Page Down 向下翻页
Home 光标移到当前行的最左端
End 光标移到当前航的最右端
n [空格] 光标向右移动n个字符
N[Enter] 光标向下N行
G 光标移到最后一行
nG 光标移动到第n行
gg或1G 光标移动到第一行
/word 向下查找word
?word 向上查找word
n 如果是/word后使用,则表示向下继续查找;
如果是?word后使用,则表示向上继续查找;
N 如果是/word后使用,则表示向上继续查找;
如果是?word后使用,则表示向下继续查找;
:n,m/old/new/g 从第n行到第m行中,将old替换为new
:n,$s/old/new/g 从第n行到最后一行中,将old替换为new
u 类似windows中的CTRL+Z,前一步
x 向后删除一个字符
X 向前删除一个字符
3x 向后删除3个字符
3X 向前删除3个字符
dd 删除当前行
3dd 删除当前行开始的3行
yy 复制当前行
3yy 复制当前行开始的3行
p 黏贴到当前光标的下一行
P 黏贴到当前光标的上一行
CTRL+r 重做前一个操作
“命令行模式”的常用按键:
“命令行模式”的常用按键 按键含义
:w 保存
:q 退出vim
:wq 保存并退出
:wq! (在可以转换权限的情况下)强制保存并退出
:q! 直接退出不保存
:w filename 另存为filename
:n,m w filename 将第n行到第m行另存为filename
:set nu 显示行号
:set nonu 不显示行号
:! command 暂时离开vim,并执行command,执行完后再进入vim
:r filename 将filename文件的数据读入当前文件
:set all 显示当前vim的环境配置
三、vim的恢复机制

vim正在编辑某个文件时都会同时存在.file.swp,此文件用来暂存,帮助恢复文件内容,当vim正常关闭此文件时,.filename.swp文件会消失。

我们看到图中说明了出现此界面的两个原因:

(1)多人同时编辑此文件:因为Linux是多用户的操作系统,因此可能两个人同时登陆并编辑此文件,如果A进入系统开始编辑1.txt文件,则会出现.1.txt.swp,当A还没编辑完但B也想进去编辑时,因为此文件的目录中存在.1.txt.swp,则就会出现上图的界面;
(2)非正常关闭文件;

图中最后一行说明了我们此时可以采取的几个动作:

(1)o:以只读方式打开;
(2)R:恢复,即从swp文件中恢复,但是swp文件不会随着vim关闭而删除,需要手动删除;
(3)d:删除swp文件;
(4)q:退出vim;
四、vim记录及默认配置文件

/etc/vimrc文件为全局vim配置文件。

1.如果我们用xiazdong账户使用vim后,在/home/xiazdong就会出现.viminfo文件,此文件用来作为vim的日志,记录用户使用vim打开了什么文件,做了什么操作;
2.如果xiazdong账户想要配置vim的默认环境,则可以在/home/xiazdong创建.vimrc,并且配置一些特征,比如显示行号,语法检查等;

一般使用如下配置:

set hlsearch
set backspace=2
set autoindent
set nu
set ruler
set showmode
set bg=dark
syntax on
五、Visual Block功能

Visual Block功能可以用于块复制。

(1)CTRL+v:开始复制块;
(3)y:复制块;
(4)p:黏贴块;
(5)d:删除块

六、同时编辑多个文件

多文件编辑的好处是能够将一个文件的某些内容yy后,p到另一个文件中。
vim file1 file2 即可同时编辑两个文件,但是屏幕中同时只会出现一个文件内容,需要进行切换。

(1):n:向下切换;
(2):N:向上切换;
(3):files:列出当前编辑的所有文件;
七、多窗口编辑

如下图:一个界面能够显示多个文件内容。

(1):sp:打开当前文件;
(2):sp filename:打开filename文件;
(3)CTRL+w+↓:光标切换到下一个窗口;
(4)CTRL+w+↑:光标切换到上一个窗口;
(5):q:关闭光标所在的窗口;
八、编码问题

可能会出现乱码问题,解决方法:保持终端的字符编码与文件的字符编码一致!tty1~tty6不支持显示中文,因此在tty1~tty6中显示中文必出现乱码,设置终端的字符编码。

编码转换命令:iconv
iconv -f文件的原本编码-t文件的新编码filename -o newfilename
比如有一个big5编码的文件:1.big5,要转换成utf8的文件:2.utf8,则iconv -f big5 -t utf8 1.big5 -o 2.utf8

Vim的使用方法的更多相关文章

  1. vi/vim基本使用方法

    vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...

  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. vi/vim 基本使用方法

    vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...

  6. [转帖]Vim编辑器使用方法详解

    Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...

  7. vi/vim基本使用方法(转)

    转自:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但 ...

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

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

  9. vi&vim 基本使用方法

    vi/&vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅 ...

  10. vim ctags使用方法

    一.用好系统自带软件ctags 大部分的unix系统都有ctags软件,它能跟vim很好地合作. 用途:     生成c语言的标签文件,实现相关c文件之间的跳转. 用法:     1.生成标签文件   ...

随机推荐

  1. js的设计模式

    <Practical Common Lisp>的作者 Peter Seibel 曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通 ...

  2. 第五章:javascript:队列

    队列是一种列表,不同的是队列只能在末尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据.先进先出.这点和栈不一样,在栈中,最后入栈的元素反被优先处理.可以将队列想象成银行排队办理业务的人,排队在 ...

  3. NABCD——竞争性需求分析的框架

    最近在读邹欣老师的书<构建之法>,读到很多地方,相当有感触,有种一拍大腿“啊,他说的太对了”的感觉,但都疏于记录,今天又看到一个一拍大腿特带感的一节,决定记录下来. 竞争性需求分析的框架— ...

  4. 调研Android平台开发环境的发展演变

    Android是Google推出的开源手机操作系统,主要以开发应用为主,要进行Android开发首先得搭建好开发平台.最近在搭建Android的开发环境,发现往往一个小问题都能花费你大半天时间,从刚开 ...

  5. MOTT的学习(一)

    MQTT的消息体 flag 此标志设置时,客户端或服务器尝试重新publish,PUBREL,subcribe或unsubscribe消息.这适用于消息, 其中的QoS的值大于零(0),并且需要确认. ...

  6. 2012杀毒软件排行榜TOP10强

    2012杀毒软件排行榜TOP10强 1:avast!杀毒软件       来自捷克的avast!,已有数十年的历史,它在国外市场一直处于领先地位.avast!分为家庭版.专业版.家庭网络特别版.和服务 ...

  7. zabbix_监控_端口

        目的:监控web主机80端口是否在供提服务.如果不在发出报警.配置:    1.添加监控项(Items).        打开zabbix web管理界面:选择"Configurat ...

  8. Date类型时间转换

    /* 时间转换start */ public static void main(String args[]) { Date nowTime = new Date(); System.out.print ...

  9. Java获取各种常用时间方法大全

    Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...

  10. NOI题库

    07:机器翻译 总时间限制: 1000ms 内存限制: 65536kB 描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个 ...