初时,先有ed,ed为ex之父,ex为vi之父,而vi为vim之父

c 修改

d 删除

y 复制到寄存器

g~ 反转大小写

gu 反转为小写

gU 反转为大写

> 增加缩进

< 减小缩进

= 自动缩进

gg=G 自动缩进整个文件

vim -u NONE -N -u NONE 标志让vim在启动时不加载vimrc -N 防止进入vi兼容模式

>G 增加当前行到文档末尾处的缩进层级

从进入插入模式的那一刻起,直到返回普通模式为止(输入ESC),Vim会记录每一个按键操作,做出修改后再用.命令的话,它将会重新执行所有这些操作,可以吧.看做一个很小的宏

a 在当前光标之后添加内容

A 在当前行的结尾添加内容,进入插入模式 相当于$a

C 删除光标之后的结尾的内容并进入插入模式 相当于 c$

s 删除光标所在字符并进入插入模式 相当于cl

S 删除整行并进入插入模式 相当于 ^C

I 在当前行的开头插入 相当于^i

o 在当前行的下一行插入 相当于A<CR>

O 在当前行的上一行插入 相当于ko

R 一直替换直到退出替换模式

b 把光标移动到单词的开头

* 光标跳到下一个匹配项上,并对所在单词进行查找,高亮显示

# 光标跳到上一个匹配项上,并对所在单词进行查找,高亮显示

cw 删除从光标位置到单词结尾间的字符,并进入插入模式

c3w 删除从光标位置开始到单词结尾的字符 以及后面两个单词也删除

db 删除从光标起始位置到单词开头的内容,但会留下光标所在位置的单词

dw 删除光标所在位置到单词结尾的内容

daw 删除光标所在位置的单词和一个空格,不管光标在单词的什么位置 可以记忆为delete a word

dl 删除一个字符

dap 删除一整个段落

gUaw 把当前单词转换成大写

gUap 把整个段落转换成大写

gu 转换成小写

g~ 反转大小写

Vim的语法只有一条额外规则,即当一个操作符命令被连续调用两次的时,它会作用于当前行。所以dd删除当前行>>缩进当前行
gUU作用于当前行 g~~作用于当前行

<C-a> 对数字执行加操作 10<C-a> 相当于加10 007+001=010 Vim默认把0开头的数字当成把进制处理

<C-x> 对数字执行减操作 10<C-x>相当于减10

f{char} 让Vim查找下一处指定字符出现的位置,如果找到了,就直接把光标移动到那
f+ 直接移动到下一个+号出现的位置 ";"命令会重复上次f命令所查找的字符 ","可以撤回

##可重复的操作及如何回退

做了一个修改 {edit} . u

在行内查找下一个指定的字符 f{char}/t{char} ; ,

在行内查找上一个指定的字符 F{char}/T{char} ; ,

执行替换 :s/target/replacement & u

执行一系列修改 qx{changes}q @x u

在Vim中从进入到插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改。

:,$d 删除当前行到最后一行

:%d 删除所有行

:1,.d 删除第一行到当前行

:31,36 s/^/#/g 31~36行加上#号

标记:mark m+任意字母 单引号'+字母 返回标记行

:n +文件名 创建新文件

:9,15 copy 16 或 :9,15 co 1 将第9行至第15行的数据,复制到第16行

:w +文件名 另存为,但是当前正在编辑的文件不会切换

:sp[文件名] split 横向增加分屏

CTRL + w
w(window) 切换到下一个窗口
r(reserve) 互换窗口
c(close) 关闭窗口
o(other) 关闭其他窗口

:vsp[文件名] 纵向增加分屏

:set ignorecase设置忽略大小写

取消vim自动注释autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=

:!{命令} 方式执行shell命令

<C-[> 相当于<Esc>

<C-o> 插入-普通模式 :是普通模式的一个特例,它能让我们执行一次普通模式命令,执行完毕后,马上又回到插入模式

ZZ: 保存退出

zz: 重绘屏幕,把当前行显示在屏幕正中

K: 查看处于光标位置下的那个单词的手册页

J:把当前行和下一个行连接到一起

<C-r>= 在插入模式中使用<C-r>=使用表达式寄存器

<C-v>{code} 可以在插入模式中使用字符编码 插入字符 比如输入<C-v>65然后回车 就会出现A

ga 查看任意字符的字符编码

<C-v>{123} 以十进制字符编码插入字符

<C-v>u{1234} 以十六进制字符编码插入字符

<C-v>{nondigit} 按原意插入非数字字符

<C-g> 可以在可视模式和选择模式之间切换

<C-k>{char1}{char2} 插入以二合字母{char1}{char2}表示的字符

v 激活面向字符的可视模式

V or <shift-v> 激活面向行的可视模式

<C-v> 激活面向列快的可视模式

gv 重选上次的高亮选区

it 称为文本对象

:3p 把光标移动到第三行,然后显示该行的内容

:3d 把光标移动到第三行并且删除此行

:.,$d 删除当前行到最后一行

:%d 删除当前文件的所有行 %表示当前文件中的所有行

:6t . 将第六行copy到当前行下方 t还可以写成copy或者co

:t6 将当前行复制到第6行下方

:t. 为当前行创建一个副本 (类似于普通模式下的yyp)

:t$ 把当前行复制到文本的结尾

:'<,'> 代表高亮选区

:'<,'>t0 把高亮选中的行复制到文件的开头

:m$ 将当前行移动到文件末尾

:'<,'>m$ 将高亮选中的行移动到文件末尾 相当于 dGp

@: 调出上次在末行模式的命令

:'<,'>normal . 对高亮选区的每一行,对其执行普通模式下的.命令

:%normal A; 在每一行的末尾添加一个分号

:%normal i# 注释所有行

:colorscheme <C-d> 显示所有的补全列表
:colorscheme
blue default desert evening morning pablo ron slate zellner
darkblue delek elflord koehler murphy peachpuff shine torte

<C-r><C-w> 用于将光标下的单词插入到命令行模式下

set histroy=200 让vim记录两百条命令 (注:命令行历史记录在vim重启之后仍然存在)

q/ 打开查找历史命令的命令行窗口

q: 打开Ex命令历史的命令行窗口

<Ctrl-f> 从命令行模式切换到命令行窗口

在vim命令行模式中,给命令加一个!前缀就可以调用外部程序。

!ls

!sh % 可以直接执行此文件

!{cmd}这种语法只适合执行一次性命令,但是如果想在shell中执行几条命令的话可以执行:shell命令来启动一个交互的shell会话
:shell
[root@localhost ~]#
直接exit退出就可以退出shell并返回到vim界面

:read !{cmd} 把cmd命令的输出读入到当前缓冲区中

:write !{cmd} 把缓冲区的内容作为指定的标准输入

:write ! sh 把缓冲区的内容传给外部的sh命令作为标准输入

:write! sh 把缓冲区的内容写到一个名为sh的文件

vim提供了一种方便快捷的方式来设置:[range]![filter]命令中的范围,可以用![motion]操作符切换到命令行模式,并把{motion}
涵盖的范围预置在命令行上 ,比如在普通模式执行:
!G vim就会打开命令行并把范围:.,$! 预置在命令行上

:shell 启动一个shell(输入exit返回vim)
:!{cmd} 在shell中执行{cmd}
:read !{cmd} 在shell中执行cmd,并把标准输出插入光标下方
:[range]write !{cmd} 在shell中执行cmd,以range作为其标准输入
:[range]!{filter} 使用外部程序fileter过滤指定的range 2,$!sort -t ',' -k2

:source batch.vim 执行vim脚本

使用通配符启动vim时,匹配该通配符的所有文件会被加入vim的参数列表里。可以一个个的遍历这些文件
:agrs 显示文件列表
:args index.html 在缓冲区加入一个文件
:first 第一个
:next 下一个文件

:argdo source batch.vim 可以对参数列表中的每个文件执行batch.vim脚本文件中的vim命

:bdelete N 删除一个缓冲区N
:bnext 切换到列表中的下一个缓冲区
:blast 移动到上一个缓冲区
:bfirst 移动到列表的开头
:blast 移动到列表的结尾
:ls 列出所有被载入内存中的缓冲区列表

ls 列表开头有一个数字,他是在缓冲区创建时由vim自动分配的编号,可以用
:buffer N 命令直接凭编号跳转到一个缓冲区
:bufdo 命令允许在:ls列出的所有缓冲区上执行Ex命令

:ls
1 #h + "1.txt" line 1
2 %a "2.txt" line 1

h,表示它是一个隐藏缓冲区
a,表示它是当前活动缓冲区

:edit!重新从磁盘读取此文件

:wall 保存所有缓冲区的内容
:qall! 退出不保存所有缓冲区内容

:w[rite] 把缓冲区的内容写到磁盘
:e[dit]! 把磁盘文件内容读入到缓冲区(即回滚所有操作)
:qa[ll]! 关闭所有窗口,放弃修改无需警告
:wa[ll]! 把所有改变的缓冲区写入磁盘

<C-w>s 水平切分当前窗口,新窗口仍显示当前缓冲区
<C-w>v 垂直切分当前窗口,新窗口仍显示当前缓冲区
:sp[lit] {file} 水平切分当前窗口,并在新窗口中载入file
:vsp[lit] {file} 垂直切分当前窗口,并在新窗口中载入file

<C-w>w 在窗口间循环切换
<C-w>h 切换到左边的窗口
<C-w>j 切换到左边的窗口
<C-w>k 切换到上边的窗口
<C-w>l 切换到下边的窗口
<C-w>= 使所有窗口等宽,等高
<C-w>_ 最大化活动窗口的高度
<C-w>| 最大化活动窗口的宽度
[N]<C-w>_ 把活动窗口的高度设为N行
[N]<C-w>| 把活动窗口的宽度设为N行
也可以用鼠标操作

:clo[se] 或 <C-w>c 关闭活动窗口
:on[ly] 或<C-w>o 只保留活动窗口,关闭其他所有窗口

使用find打开文件
:find test.txt
如果当前目录有这个test.txt的文件的话会直接打开这个文件,如果有多个同名文件的话,会使用第一个匹配到的文件
vim中的find默认搜索当前目录 可以使用:set path+=/tmp/** 把目录添加到查找路径中 **表示匹配目录下的所有子目录

:edit . 或e. 打开文件管理器,并显示当前工作目录
:Explore 或:E 打开文件管理器,并显示活动缓冲区所在的目录
:Sexplore 在水平切分窗口打开文件管理器
:Vexplore 在垂直切分窗口打开文件管理器

<C-^> 当使用e.打开文件管理器之后可以使用这个命令返回刚才编辑的文件

j 向下移动一个实际行
gj 按屏幕行向下移动
k 向上移动一个屏幕行
gk 按屏幕行向上移动
0 移动到实际行的行首
g0 移动到屏幕行的行首
^ 移动到实际行的第一个非空白字符
g^ 移动到屏幕行的第一个非空白字符
$ 移动到实际行的行尾
g$ 移动到屏幕行的行尾

w 正向移动到下一单词的开头
b 方向移动到当前单词/上一单词的开头
e 正向移动到当前单词/下一单词的结尾
ge 反向移动到上一单词的结尾

1 This phrase takes time but
2 evebtually gets to the point

d/ge<CR> 删除到匹配ge的行 不包括ge

gets to the point

a)或ab 选择一对圆括号 i)或ib 选择圆括号内部
a}或aB 选择一对花括号 i}或iB 选择花括号内部
a] 选择一对方括号 i] 选择方括号内部
a> 选择一对尖括号 i> 选择尖括号内部
a" 选择一对双引号 i" 选择双引号内部
a' 选择一对单引号 i' 选择单引号内部
at 选择一对XML标签<xml>tags</xml> it XML标签内部
a` 选择一对反引号 i` 选择反引号内部

m{a-zA-Z} 设置标记(小写字母会创建局部于缓冲区的标记,大写字母会创建全局标记,可以用来跳转文件)

'{mark} 跳到标记所在行,并把标记置于该行的第一非空字符上
`{mark} 把关标移动到设置此位置标记时光标所在之处

`` 当前文件中上次跳转动作之前的位置
`. 上次修改的地方
`^ 上次插入的地方
`[ 上次修改或复制的起始位置
`] 上次修改或复制的结束位置
`< 上次高亮选区的起始位置
`> 上次高亮选区的结束位置

<C-o> 文件跳转 、向后跳转到之前编辑的文件
<C-i> 文件跳转、向前跳转到之后编辑的文件

gf 跳转到光标下的文件
suffixexadd+=.rb 指定文件扩展名

P将寄存器中的内容粘贴至光标前面

"ayiw 把光标所在单词复制到a寄存器中 使用"ap粘贴a寄存器中的单词
"bdd 把光标所在整行文本剪切至b寄存器中 使用"bp粘贴b寄存器中的整行文本
"" 无名寄存器(默认的寄存器)

当使用y{motion}命令时,要复制的文本不仅会被拷贝到无名寄存器,还会被拷贝到复制专用寄存器中,复制专用寄存器可以使用数字0引用("0)

"_d{motion} 黑洞寄存器,删除文本不保留任何副本

:set paste 当使用了autoindent自动缩进了之后需要粘贴可以使用此命令防止插入的内容一行一行往右偏

:set paste! 取消

:reg a 可以查看寄存器a中的内容

@{register} 执行指定寄存器的内容

@@ 重复调用使用过的宏

------------------------------------------
x = "("+a+","+b+","+c+","+d+","+e+")"
f+ #f{char}跳转
s + <ESC> #.范式
qq;.q #录制宏
22@q #回放宏
-------------------------------------------

:put a 将寄存器a中的命令粘贴上来

:set ignorecase 设置vim查找模式不区分大小写

\c 在查找模式的结尾设置忽略大小写
\C 再查找模式的结尾设置强制区分大小写

:set hlsarch 启用高亮查找
:set nohlsearch 禁用高亮查找功能

:set incsearch 在执行查找前预览匹配(即时查找:)

:%s///gcn g代表全局匹配 c代表需要确认 n代表只统计匹配数 %表示整个文件

未完待续.....

vim小操作的更多相关文章

  1. 必须熟悉的vim快捷键操作

    转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍:插入模式 和  命令模式 是vi的两个基本模式.——插入模式 ,是用 ...

  2. Service系统服务(二):补充应用技巧、软连接与硬连接、man手册、zip备份、vim效率操作、自定义yum软件仓库、发布及测试yum仓库、编译安装软件包

    一.补充应用技巧 目标: 本例要求掌握在运维中比较常用的一些扩展命令技巧的使用,完成下列小技巧操作: 1> 采用数值形式将目录/root的权限调整为 rwx------   2> 将记录的 ...

  3. 提升使用Linux效率的小操作

    提升使用Linux效率的小操作 保存更新? 本文记录了个人在使用Linux时觉得好用的一些快捷方式/功能: 为那种知道了能提高效率,但是的不知道也并没有影响的操作. 历史命令 该操作用于快速查看已使用 ...

  4. VIM编辑器操作指令

    VIM有三种操作模式: 1,命令模式--command mode 2,输入模式--insert mode 3,底行模式--last line mode [在命令模式的时候,按Shift +  :出现的 ...

  5. VIm快捷操作

    vim快捷操作 移动 行级移动 $ 行尾 0 行头 段级移动 { 段首 } 段尾 屏幕级别 L: 屏幕尾部 H: 屏幕头部 文档级别 G: 文档尾部 1G:头部 nG:文档n行 删除 dd: 删除当前 ...

  6. 使用Mac的过程中的一些小操作

    前言:使用Mac的过程中的一些小操作 查看Mac系统是32位还是64位: 方法1: 点击左上角的苹果按钮->关于本机->概览->系统报告->软件->偏好设置面板:右侧有提 ...

  7. 【vim小小记】vim的复制粘贴(包括系统剪贴板)

    1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...

  8. VIM常用操作手册

    VIM常用操作手册 1.多行操作,多行注释,多行取消注释 https://jingyan.baidu.com/article/9c69d48f43ed6d13c8024e7b.html 2.常用操作 ...

  9. vim效率操作

                                        vim效率操作 案例6:vim效率操作 6.1问题 本例要求掌握使用vim文本编辑器时能够提高操作效率的一些常用技巧和方法,完成 ...

随机推荐

  1. jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

    背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...

  2. JMeter(7) 优化判断返回类型和返回值

    之前判断接口类型和返回值用beanshell,可见JMeter(5)-JMeter之BeanShell使用 优化点 接口测试里面对返回字段的类型验证和值验证为基本需求,将方法导成jar文件,导入之后方 ...

  3. 【手撸一个ORM】第二步、封装实体描述和实体属性描述

    一.实体属性描述 [MyProperty.cs] Name,属性名称 PropertyInfo,反射获取的属性信息,后面很多地方需要通过该属性获取对应的实体类型,或调用SetValue进行赋值 Fie ...

  4. 1121 - Reverse the lights 思维题

    http://www.ifrog.cc/acm/problem/1121 我看到这些翻转的题就怕,可能要练下这些专题. 我最怕这类题了. 一开始想了下dp, dp[i][0 / 1]表示完成了前i位, ...

  5. springIOC+Mysql+springmvc事务测试题总结

    1.关于http1.1和1.0的长连接和短连接 两个都支持长连接和短连接 http1.0默认为短连接,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接 http1.1 ...

  6. C#调用C++接口返回字符串的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在有这样一种情景,假如C#调用C++接口需要返回一个字符串.因为字符串是不定长的,因此传递一个定长的字符串进去是不合 ...

  7. 浅窥ArcGIS Data Store之两斑

    关于 ArcGIS Data Store,我们备受大家喜爱的suwenjiang朋友在其博客空间suwenjiang的烂笔头中贡献了<ArcGIS Data Store初体验>一文,全面讲 ...

  8. MovieReview—Transformers.The.Last.Knight.(变形金刚5:最后的骑士.)

     Gorgeous Effect & Bad Plot   I can only say that the movie's effects are shocking. However, the ...

  9. Ruby中访问控制符public,private,protected区别总结

    重点关注private与protected public 默认即为public,全局都可以访问,这个不解释 private C++, “private” 意为 “private to this cla ...

  10. gzip, gunzip, zcat - 压缩或展开文件

    总揽 gzip [ -acdfhlLnNrtvV19 ] [-S 后缀] [ 文件名 ... ] gunzip [ -acfhlLnNrtvV ] [-S 后缀] [ 文件名 ... ] zcat [ ...