1. 文件命令
2. 模式切换
3. 移动命令
4. 书签命令
5. 修改命令
6. 可视化操作
7. 区域选择
8. 宏命令
9. 分屏
10. 系统设置命令

1. 文件命令

[:]开始的命令需要输入[Enter]结束
 
:q:退出
:q!:退出不保存
:qa!:退出所有文件不保存
:w:保存
:e <file>:关闭当前文件并打开另一个文件
:saveas <file>:另存为<file>
 
:wq 或 :x 或 ZZ:保存并退出(ZZ不需要冒号[:])
 
:bn或:n:打开多个文件时,切换到下一个文件
:bp:多个文件时,切换到上一个文件
 
sudo权限强制写入::w !sudo tee % (!sudo - 执行shell命令sudo,tee - 将:w结果重定向,% - 当前文件)
:help <command>:显示命令帮助
 
:!<command>:执行一个Shell命令
:bash:启运一个shell而不退出vi。exit 命令后回到vim
:[n]:冒号后跟数字表示要到第几行,如果跟1,表示到文件头,如果跟$,表示到文件尾
Ctrl+G:可以显示当前行在整个文件的百分比

2. 模式切换

2.1 Normal模式 转 插入模式

i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
<C-V>c:输入特殊字符^C
<C-P>或<C-N>:自动补齐

2.2 插入模式 转 Normal模式

[ESC]

3. 移动命令

N<command>:重复某个移动或修改命令N次
h、j、k、l:左、下、上、右 移动
g[h、j、k、l]:让移动相对于屏幕显示的行数而不是vim内部的行数

3.1 行内移动

w:移动到下一个单词开头
e:移动到下一个单词结尾
b:移动到前一个单词开头
W/E/B:移动时单词以空格分隔,默认只包含字母、数字和下划线
0:移动到当前行首
^:移动到当前行的第一个非空字符
$:移动到行尾
g_:移动到当前行尾第一个非空字符
):移动光标到下一个句子,使用句号[.]或换行分隔
( :移动光标到上一个句子,使用句号[.]或换行分隔 

3.2 文件内移动

G:到文件尾
[n]G:移动光标到指定的行(n)。(比如 10G 就是到第 10 行)
gg:到文件首
 
H:移动光标到屏幕上面
M:移动光标到屏幕中间
L:移动光标到屏幕下面
 
<C-F>:向下移动一屏
<C-B>:向上移动一屏

3.3 查找并移动

行内查找

使用[;]重复上一个 f/t/F/T 命令
fx:移动光标到当前行的下一个 x 处。x 可以是任意一个字母,而且你可以
tx:和上面的命令类似,但是是移动到 x 的左边一个位置(这真的很有用)
Fx:和 fx 类似,不过是往回找
Tx:和 tx 类似,往回找的 x 的右边一个位置

文件内查找

%:跳转到配对的括号
[[:跳转到代码块的开头去(但要求代码块中'{'必须单独占一行)
'':跳转到光标上次停靠位置的行首字母处, 是两个', 而不是一个"
*:读取光标处的字符串,并且移动光标到它再次出现的地方。重复搜索按[n]
#:和上面的类似,但是是往反方向寻找。重复搜索按[n]
gd或gD:跳转到光标所在局部变量(或任意字符串)的定义处
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。重复搜索按[n]
?text:和上面类似,但是是反方向

4. 书签命令

ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
`a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。
`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。

5. 修改命令

.:重复上一次修改命令
N<command>:重复某个移动或修改命令N次,还可以重复其他命令,如10iza[ESC],表示重复插入10次za。
u:撤销上次修改
U:撤销当前行的所有修改
<C-R>:(撤销后)重做上次修改

5.1 格式控制

>>:增加缩进,"x>>"表示增加以下x行的缩进
<<:减少缩进,"x<<"表示减少以下x行的缩进 
 
合并下一行与当前行: J 

5.2 剪切(删除)、复制、粘贴

*motion可以是任意移动命令,如^、$、G、w、fx
*剪切板(又叫寄存器[register]),[:reg]列出使用中的寄存器及内容,使用"ayy将当前行复制到寄存器a,使用"ap粘贴寄存器a的内容
d{motion}:剪切,把motion"掠过"的文本剪切到剪切板
c{motion}:剪切并进入插入模式
dd:剪切当前行
cc:剪切当前行并进入插入模式
D:剪切光标当前位置到行尾,类似于[d$]
C:剪切光标当前位置到行尾并进入插入模式,类似于[c$]
x:剪切当前字符. (类似于命令模式的退格(backspace)键)
s:剪切当前字符并进入插入模式
y{motion}:复制,同上
yy:复制当前行到剪切板
Y:复制行到剪切板,类似于[yy]
 
p:粘贴到当前位置之后
P:粘贴到当前位置之前
]p:和p相似, 但自动调整粘贴代码的缩进
]P:和P相似, 但自动调整粘贴代码的缩进

5.3 查找替换

:%s/word1/word2/g:全文搜索word1并以word2替换之
:[n],[m]s/word1/word2/g:仅在第a行到第b行间搜索并替换
字符串查找时,”\n” 是换行,”\r” 是回车,也就是经常会看到的 ^M。

字符串替换时,”\r” 是换行,’\n” 是空字符(0×00)

 
删除空行:g/^\s*$/d

6. 可视化操作

选择文本

v:字符选择
V:行选择
<C-V>:块选择,可以选择任意矩形块

操作

d/c/y:删除或复制
gu或gU:全变小写或大写 
J:连接所有行
>或<:左右缩进
=:自动缩进

实例

^ 选择 Ixx[ESC]:行首插入
选择 Ixx[ESC]:块前插入xx
选择 Axx[ESC]:块末插入xx
选择 $ Axx[ESC]:行末插入

7. 区域选择

<action> [n] a/i <object>:选择object所指目标范围内的n重内容,如单词、句子、括号()、[]
<action>:d - 删除,y - 拷贝,v - 可视化选择
a/i:a - 包含object,i - 不包含object
<object>:w - 单词,W - 空格分隔单词,s - 句子,p - 段落,"/'/)/}/] - 括号或引号

8. 宏命令

qa:开始录制宏并保存在寄存器[a]
q:结束录制
@a:回放存在寄存器a的宏
@@:回放最新的宏
 
实例
qaYp<C-A>q 100@@:将1行"1"变成101行数字序列:1\r 2\r 3\r ... 101

9. 分屏

vim -On file1 file2 ...:打开若干文件,并垂直分屏
vim -on file1 file2 ...:打开若干文件,并水平分屏
:new:创建空白水平分屏
:vsplit(:vsp) <file>:创建垂直分屏,并打开文件<file>,默认为当前文件
:sp(split) <file>:创建水平分屏,并打开文件<file>,默认为当前文件
 
基本都是<C-W>然后加上某一个按键字母,触发一个功能
<C-W> c/q或:q:关闭当前窗口
<C-W> o或:only:关闭所有其他窗口
<C-W> s/v:水平/垂直分屏当前文件
 
<C-W> h/j/k/l:移动光标到左/下/上/右边分屏
<C-W> w:移动光标到顺序下一个分屏
 
<C-W> H/J/K/L:移动分屏到左/下/上/右边
<C-W> =:所有分屏大小相等
<C-W> +/-:增加/减少分屏高度
<C-W> >/<:增加/减少分屏宽度

10. 系统设置命令

在Normal模式下使用[:set xxx]设置开启,使用[:set noxxx]设置关闭,也可写在~/.vimrc文件中(文件中不要冒号[:])
syntax enable
syntax on
set ic                  "忽略大小写(ignore case)
set noic               "不忽略大小写
set nu               "显示行号     
set hlsearch
set expandtab      "设置tab 
set shiftwidth=4   "设置tab的间隔 
set ts=4               "四个空格代表一个tab(tabstop)
set ai                   "设置自动缩进(autoindent)  
set ls=2               "总是显示文件名(也可以用 Ctrl+G 或 :f)
 

Vim 命令整理的更多相关文章

  1. vim 命令整理(自己经常使用)

    vimm(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器. vimm分为两种状态,即命令状态和编辑状态.在命令状态下.所键入的字符系统均作命令来处理.如:q代表退出,而编辑状态则是用 ...

  2. vim命令整理

    最近使用vim比较多,整理一下!

  3. 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  4. Vim 模式及常用命令整理

    VIM 命令     以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令.   vim的模式 基本上可以分为3种模式,分别是命令模式(command mode).插入模 ...

  5. Linux 命令整理 vim

    Vim  一.官方网站 http://www.vim.org 二.背景 所有的 Unix Like 系统都会内建 vi 文书编辑器,但是在我们编程这里开发使用最多的要数 vim命令了. 三.操作 三种 ...

  6. 【linux】---常用命令整理

    linux常用命令整理 一.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: l ...

  7. vi / vim 命令集合

    vim的命令太多了,不常用就会忘记,所以我决定把vim的各种命令整理下来,包括vim的插入删除.光标移动.多窗口编辑.复制粘贴.查找替换.以及一些常用命令 删除操作 dd 删除当前行 ndd      ...

  8. vi命令整理

    vi命令整理 u 撤销上一次操作 ctrl+r 恢复上一次操作 : 跳转至第1行 :$ 跳转至最后一行 ctrl+f 向文章末尾翻页 ctrl+b 向文章开始翻页 yy 复制一行 p 粘贴刚刚复制第一 ...

  9. 常用 vim 命令总结

    学习 vim ,是需要经常使用的,而这些命令,是我这段时间最常用的命令,很有效率的提高的我的文本编辑效率.----------------------------------------------- ...

随机推荐

  1. ZeroClipboard 复制到剪贴板

    使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ...

  2. SharePoint 2010商业智能组件

    Microsoft Office SharePoint Server (MOSS) 2007中,就已经提供了很多支持商业智能的能力.其中主要的组件包含Excel Services, Reporting ...

  3. 基于 jQuery 实现垂直滑动的手风琴效果

    今天我们要与大家分享一个漂亮而灵活的垂直 jQuery 手风琴效果.其主要思想是扩大手风琴片上的点击和显示更多的信息.其他内容片段将变得不那么透明.当使用一个导航箭头导航下一个片段,新的片会从顶部或底 ...

  4. 推荐10个适合初学者的 HTML5 入门教程

    HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...

  5. SharePoint 2013 通过HttpModule 管理视图权限

    HttpModule工作原理 HttpModule负责监听HttpRequest,当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任 ...

  6. KVO的底层实现

    1.KVO是基于Runtime机制实现的: 2.当某个类的对象的某个属性第一次被观察时,系统会在运行期间动态地创建该类的一个派生类,在这个派生类中重写基类的任何被观察属性的setter方法,派生类在被 ...

  7. Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

    1.CALayer 1).在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮.文本标签.文本输入框.图标等,这些都是UIView 2).UIView之所以能显示在屏幕上,完全是因为它内 ...

  8. Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数

    1.主要布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...

  9. 对URL编码

    url支持26个英文字母.数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码.iOS中提供了函数stringByAddingPercentEscapesUsingE ...

  10. Swift开发第九篇——Any和AnyObject&typealias和泛型接口

    本篇分为两部分: 一.Swift中的Any和AnyObject 二.Swift中的typealias和泛型接口 一.Swift中的Any和AnyObject 在 Swift 中,AnyObject 可 ...