Vim的使用方法
| 导读 | Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 |
(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'”;
| “一般模式”的常用按键 | 按键含义 |
|---|---|
| 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正在编辑某个文件时都会同时存在.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;
/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功能可以用于块复制。
(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的使用方法的更多相关文章
- vi/vim基本使用方法
vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- linux系统中如何进入退出vim编辑器,方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了.偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致强 ...
- [转] linux系统中如何进入退出vim编辑器,方法及区别
原文链接:http://www.cnblogs.com/crazylqy/p/5649860.html 在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触 ...
- 【转】linux系统中如何进入退出vim编辑器,方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...
- vi/vim 基本使用方法
vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...
- [转帖]Vim编辑器使用方法详解
Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...
- vi/vim基本使用方法(转)
转自:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但 ...
- linux系统中如何进入退出vim编辑器的方法及区别
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...
- vi&vim 基本使用方法
vi/&vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅 ...
- vim ctags使用方法
一.用好系统自带软件ctags 大部分的unix系统都有ctags软件,它能跟vim很好地合作. 用途: 生成c语言的标签文件,实现相关c文件之间的跳转. 用法: 1.生成标签文件 ...
随机推荐
- T4模板根据DB生成实体类
1.前言 为什么会有这篇文章了,最近看到了一些框架,里面要写的代码太多了,故此就想偷懒,要是能写出一个T4模板,在数据库添加表后,根据模板就可以自动生成了类文件了,这样多好,心动不如行动.记得使用T4 ...
- Ruby On Rails 常用的精品Gem汇总
首先需要注明一点,本文是原创的并不是从其它地方转载.所有的数据是我从 GitHub 和 RubyGems 上码下来的,数据的截取时间就是本文的发布日期. RubyGems 的下载量可以看到在用这个 g ...
- express 笔记 app.helpers 和 app.locals
app.helpers 和app.dynamicHelpers 是express2.X使用的 分别为静态/动态 视图助手通过其注册函数, 例如 app.helpers({ <span style ...
- [wikioi 1418]铃仙•优昙华院稻叶(东方幻想乡系列模拟赛)(树上递推)
题目:http://www.wikioi.com/problem/1418/ 分析: 一看就肯定是树上的递推 设f[i][j][k]表示第i秒在k点(从j点走过来的)的概率 则f[i][j][k]=f ...
- 第二十三课:jQuery.event.add的原理以及源码解读
本课主要来讲解一下jQuery是如何实现它的事件系统的. 我们先来看一个问题: 如果有一个表格有100个tr元素,每个都要绑定mouseover/mouseout事件,改成事件代理的方式,可以节省99 ...
- Java泛型中E、T、K、V等的含义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Numbe ...
- js简单的工厂模式
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- Tomcat 使用说明
Tomcat下有7个目录,分别是bin,conf,lib,logs,temp,webapps,work 目录 Tomcat根目录在tomcat中叫<CATALINA_HOME> 1.< ...
- Java怎么实现多继承的功效
Java不支持多继承,但是通过一些巧妙的设计来达到和多继承同样的效果 通过接口.内隐类,继承.实现,互相配合,达到多继承的效果 1.Java中一个类不能继承多个具体class. 2.一个类只可继 ...
- Windows下一些配置信息
VC.VS和.NetFramework版本对应关系 VC6.0对应VS 6.0 VC7.0对应VS 2002 VC7.1对应VS 2003 .Net Framework1.0/1.1 VC8.0对应V ...