本文更新于2019-09-05。

说明:下文中,使用{}引起表示自定义变量,根据实际情况填写。使用[]引起表示内容可选,使用<>引起表示按键内容。(+)表示按键组合

模式

vim包括命令模式、编辑模式、底行模式。

编辑模式 <--------------------- 命令模式 ---------------------> 底行模式
---------------------> <---------------------

命令模式

进入vim时使用的是命令模式。

按键 说明
0 光标移动至该行第一个字符
$ 光标移动至该行最后一个字符
<Home> 光标移动至该行第一个字符
<End> 光标移动至该行最后一个字符
{n}← 光标向左移动n个字符,默认为一个字符
{n}↓ 光标向下移动n行,默认为一行
{n}↑ 光标向上移动n行,默认为一行
{n}→ 光标向右移动n个字符,默认为一个字符
{n}h 光标向左移动n个字符,默认为一个字符
{n}j 光标向下移动n行,默认为一行
{n}k 光标向上移动n行,默认为一行
{n}l 光标向右移动n个字符,默认为一个字符
{n}<Space> 光标向右移动n个字符,默认为一个字符
{n}<Enter> 光标向下移动n行,至其第一个字符
- 光标移动到非空格的上一行
+ 光标移动到非空格的下一行
<Page Up> 光标向上移动一页
<Page Down> 光标向下移动一页
<Ctrl>(+)b 光标向上移动一页
<Ctrl>(+)f 光标向下移动一页
<Ctrl>(+)u 光标向上移动半页
<Ctrl>(+)d 光标向下移动半页
H 光标移动至此屏幕第一行的第一个字符
M 光标移动至此屏幕中间行的第一个字符
L 光标移动至此屏幕最后一行的第一个字符
gg 光标移动至文件第一行的第一个字符
{n}G 光标移动至文件的第n行的第一个字符,默认为最后一行
<Ctrl>(+)wj 光标移动至下面的窗口
<Ctrl>(+)w↓ 光标移动至下面的窗口
<Ctrl>(+)wk 光标移动至上面的窗口
<Ctrl>(+)w↑ 光标移动至上面的窗口
<Ctrl>(+)wq 退出当前窗口
v 多字符选择,反白选择光标经过的连续字符
V 多行选择,反白选择光标经过的连续行
<Ctrl>(+)v 块选择,反白选择光标移动开始和移动结束位置间的矩形文本块
{n}X 剪切光标前n个字符,默认为一个字符
{n}x 剪切光标所在字符起后n个字符,默认为一个字符
d0 剪切光标前一个字符至该行第一个字符
d$ 剪切光标所在字符至该行最后一个字符
{n}dd 剪切光标所在行开始的n行,默认为一行
d1G 剪切光标所在行至第一行
dG 剪切光标所在行至最后一行
d 剪切反白选择的字符
y0 复制光标前一个字符至该行第一个字符
y$ 复制光标所在字符至该行最后一个字符
{n}yy 复制光标所在行开始的n行,默认为一行
y1G 复制光标所在行至第一行
yG 复制光标所在行至最后一行
y 复制反白选择的字符
P 粘贴,如粘贴行则粘贴在当前行上一行
p 粘贴,如粘贴行则粘贴在当前行下一行,可黏贴矩形文本块
J 将光标所在行与下一行合并至同一行
{n}c{direction} 进入插入模式,并向指定方向剪切n个字符或n行,direction可为←、↓、↑、→、h、j、k、l
i 进入插入模式,从光标所在字符处开始插入
I 进入插入模式,从光标所在行第一个非空白符处开始插入
a 进入插入模式,从光标所在字符的下一字符处开始插入
A 进入插入模式,从光标所在行最后一个字符后开始插入
o 进入插入模式,在光标所在行下一行插入新行
O 进入插入模式,在光标所在行上一行插入新行
r 使用下一个输入的字符替换光标所在字符,只替换一次
R 进入替换模式,一直替换光标所在字符直至输入<Esc>,期间可移动光标
u 撤销上一个操作
<Ctrl>(+)r 重做上一个撤销的操作
. 重复上一个操作
n 重复底行模式输入的前一个查找操作
N 反方向重复底行模式输入的前一个查找操作
ZZ 如文件有改动,则保存文件后退出vim;如文件没有改动,则直接退出vim

编辑模式

编辑模式包括:插入模式,界面左下方有“-- INSERT --”提示;替换模式,界面左下方有“-- REPLACE --”提示。

按键 说明
<Esc> 退出编辑模式,回到命令模式

底行模式

底行模式需使用<Enter>结束输入。

按键 说明
/{word} 向下查找word
?{word} 向上查找word
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出打开的所有文件
:sp [{filename}] 打开新窗口。如不指定filename则使用当前窗口相同的文件
:set {setting} 修改vim设置
:{n},{m}s/{src}/{dst}/g[c] 将n(含)至m(含)行的src替换为dst,m使用$表示最后一行。可使用c指定替换前需要提示确认
:r {filename} 读取指定文件内容并插入至光标所在行的下一行
:[{n},{m}] w {filename} 将文件内容保存至指定文件,可指定n(含)至(m)行
:w[!] 保存文件。可使用!强制保存文件,但实际能否保存仍与文件权限有关
:q[!] 退出vim或退出当前窗口。可使用!强制退出,不保存文件
:wq[!] 保存文件后退出vim。可使用!强制保存后退出,但实际能否保存仍与文件权限有关
:![ ]{command} 暂时离开vim,执行Linux命令
<Esc> 退出底行模式,回到命令模式

.vimrc

vim设置。每行一个设置值,可以:开始,可使用"注释该行后面的内容。

设置 说明
set 显示所有与默认值不同的设置
set all 显示当前所有设置
set autoindent 自动缩进
set backspace=N 设置编辑模式下退格键的动作。2可以删除任何字符,0和1只能删除刚刚输入的字符,无法删除已存在的字符
set backup 自动备份文件。即当文件有任何改动时,原文件会在文件所在目录下备份为FILENAME~
set bg=dark|light 指定背景色调
set hlsearch 高亮查找结果
set noautoindent 取消自动缩进
set nohlsearch 取消高亮查找结果
set nonu 取消显示行号
set nu 显示行号
set ruler 显示右下角的提示
set showmode 显示左下角的提示
syntax on|off 开启/关闭语法高亮

.viminfo

记录vim的历史操作。

.swap

使用vim打开文件后,会在文件所在目录下生成.FILENAME.swap文件。

Linux学习笔记:vim的更多相关文章

  1. Linux学习笔记--vim

    Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. vim的三种模式 命令模式(Command mode),输入模式(Insert m ...

  2. Linux学习笔记—vim程序编辑器

    vi和vim vim是vi的升级版,支持vi的所有指令 vi的使用 vi分为三种模式:一般模式.编辑模式.命令行模式 一般模式 以vi打开一个文件就直接进入一般模式了,这个模式下可以使用上下左右按键来 ...

  3. linux/linux学习笔记-vim文本编辑器(mooc)

    vim文本编辑器 vim与vi的区别:( vim=vi +IMproved) VIM是一个Unix以及类unix文本编辑器 特点:功能强大,高度可定制 vim编辑器的三种模式:一般模式.编辑模式和命令 ...

  4. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  5. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  6. deepin linux 学习笔记(二)——文本编辑器

    目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...

  7. Linux 学习笔记之超详细基础linux命令 Part 12

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...

  8. Linux 学习笔记之超详细基础linux命令 Part 4

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 3----------------- ...

  9. 91 Testing Linux学习笔记

    91 Testing Linux学习笔记... 学习地址:91Testing 的Linux教程=====================学习网址:http://www.91testing.net/ar ...

  10. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

随机推荐

  1. 能用的单纯形法python代码

    网上找了一些代码,发现有一些是不能用的,出现错误说集合为空 1.网上出现了好多次,但是不能用的,只能部分模型能用,比如例子中所示 原链接:https://www.jianshu.com/p/b233c ...

  2. Selenium(九)测试用例数据分离与从文件导入数据

    一.测试用例数据与代码分离 1.从之前的脚本来看,我还是把数据写在了脚本中,这样脚本的通用性很差.全局的数据其实可以从数据库.文本文件.Excel中直接读取. 2.代码和用户数据分离: 3.数据设计- ...

  3. webpack4 Cannot find module '@babel/core'

    Error: // webpackCannot find module '@babel/core'解决办法一: 原因"babel-loader": "^8.0.0&quo ...

  4. 001_C#我的第一个串口上位机软件

    (一)首先感谢杜洋工作室 < 入门 C#设计 >带来的视频教学 (二)本次设计从会单片机但是又不会上位机又想搞简单上位机的人群角度提供教程 (三)本次教程的目的是制作普通的串口软件,从而实 ...

  5. number-progression-network

    T1给定一个 $n$ 位的数字串,要求修改若干位,使得至少包含 $k$ 个相同的数位,最小化代价. Sol 考虑枚举那种数字作为答案,选代价前 $k$ 小的修改成目标数字. 有一部分的数字是必须修改的 ...

  6. 线程的分离状态 detached joinable

    转自  http://blog.chinaunix.net/uid-26983585-id-3315953.html 其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的 ...

  7. JavaWeb_(Spring框架)注解配置

    系列博文 JavaWeb_(Spring框架)xml配置文件  传送门 JavaWeb_(Spring框架)注解配置 传送门 Spring注解配置 a)导包和约束:基本包.aop包+context约束 ...

  8. fluent中隐藏模型的开启【转载】

    转载自:http://blog.sina.com.cn/s/blog_5fd791530100d5ic.html fluent中设置了一些隐藏模型,普通的用户界面是没有相关选项的,必须用相关命令开启. ...

  9. .net core 修改 Identity/AspNetUsers 数据库

    众所周知,.net core有一套完整的用户管理功能.使用它就能实现用户的管理及登录登出功能.现在问题来了,我们有时候需要添加一些字段,该怎么办呢?当然是修改他呀.修改方法参考链接:https://m ...

  10. js中那些方法不改变原来的数组对象

    一.map方法 function fuzzyPlural(single) { var result = single.replace(/o/g, 'e'); //replace也不会修改原来数组的值, ...