本文为在使用vim过程中,自己归纳总结的vim常用操作技巧

1.  I   定位到行首,并开始输入2.  A  定位到行尾,并开始输入
3.  输入$,定位到当前行倒数第二个数,默认最后一个为标点符号
4.  如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh//******************* 文档操作***********************************
:e file --关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
:e#或ctrl+^ -- 回到刚才编辑的文件,很实用。
:f或ctrl+g -- 显示文档名,是否修改,和光标位置当前百分比
:f filename -- 改变编辑的文件名,这时再保存相当于另存为。
:wq -- 保存并退出。
ZZ -- 保存并退出。
:x -- 保存并退出。:Sex -- 水平分割一个窗口,浏览文件系统;
:Vex -- 垂直分割一个窗口,浏览文件系统;:sp     vim水平分割窗口(split)
快捷键  Ctrl ws
:vsp    vim垂直分割窗口(vsplit)
快捷键  Ctrl wv//*******************光标的移动***********************************
w: 前移一个单词,光标停在下一个单词开头;
e: 后移一个单词,光标停在下一个单词末尾;
gg: 到文件头部。
G: 到文件尾部。
ctrl+f: 下翻一屏。
ctrl+b: 上翻一屏。
ctrl+d: 下翻半屏。
ctrl+u: 上翻半屏。
ctrl+e: 向下滚动一行。
ctrl+y: 向上滚动一行。
n%: 到文件n%的位置。i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。
I: 在当前行第一个非空字符前插入;
gI: 在当前行第一列插入;
a: 在光标后插入;
A: 在当前行最后插入;
o: 在下面新建一行插入;
O: 在上面新建一行插入;:r filename在当前位置插入另一个文件的内容。
:[n]r filename在第n行插入另一个文件的内容。
:0 r !sed  '1,5p' read.txt   在第0行,插入read.txt文件的1-5行内容。  这里!使得能使用外部命令,下面的:r 理解为插入内容。
!command  执行命令
r!command  读入命令的输出:!! 执行上一次的外部命令。:r !date 在光标处插入当前日期与时间。同理,:r !command可以将其它shell命令的输出插入当前文档。c[n]w: 改写光标后1(n)个词。
c[n]l: 改写光标后n个字母。
c[n]h: 改写光标前n个字母。
[n]cc: 修改当前[n]行。                                                             单独一个cc,删除当前行,并且光标处于输入状态
[n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。
[n]S: 删除指定数目的行,并以所输入文本代替之。                    单独一个S,删除当前行,并输入文本代替删除包含特定字符串的行
:g/str/d       str为要特定字符串[n]x: 剪切光标右边n个字符,相当于d[n]l。
[n]X: 剪切光标左边n个字符,相当于d[n]h。
y: 复制在可视模式下选中的文本。
yy or Y: 复制整行文本。y$: 从光标当前位置复制到行尾。
y0: 从光标当前位置复制到行首。
:m,ny<cr> 复制m行到n行的内容。
[n] dd: 删除(剪切)1(n)行
p: 在光标之后粘贴。
P: 在光标之前粘贴。/something: 在后面的文本中查找something。
?something: 在前面的文本中查找something。//*******************grep***********************************
vimgrep /匹配模式/[g][j] 要搜索的文件/范围
g:表示是否把每一行的多个匹配结果都加入
j:表示是否搜索完后定位到第一个匹配位置vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *             在当前目录下查找所有
vimgrep /pattern/ **            在当前目录及子目录下查找所有
vimgrep /pattern/ *.c          查找当前目录下所有.c文件
vimgrep /pattern/ **/*         只查找子目录:vimgrep /flash/gj  **/*.as 搜索当前目录以及所有子目录内as文件中的'flash':vimgrep /an error/gj   *.c   在所有.c文件中搜索an error:vimgrep /an error/gj    *    在当前目录下的文件搜索an error,不包括子目录
cn                                          查找下一个
cp                                            查找上一个
copen                                    打开quickfix
cw                                          打开quickfix
cclose                                   关闭qucikfix
help vimgrep                       查看vimgrep帮助
加数字限定搜索结果的上限
:1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。//*******************替换***********************************
:s/old/new - 用new替换当前行     第一个    old。
:s/old/new/g - 用new替换当前行    所有的     old。
:n1,n2 s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换      文件中所有的    old。
:%s/^/xxx/g - 在每一行的行首插入xxx,                               ^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,                                $表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,、SDF
语法为 :[range]g/pattern/command
例如 :%g/^ xyz/normal dd。
表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。如果不指定range,则表示当前行。
m,n: 从m行到n行。
0: 最开始一行(可能是这样)。
$: 最后一行
.: 当前行
%: 所有行
//*******************编辑***********************************
我们可以一次打开多个文件,如
vi a.txt b.txt c.txt
使用:next(:n)编辑下一个文件。
:2n 编辑下2个文件。
使用:previous或:N编辑上一个文件。
使用:wnext,保存当前文件,并编辑下一个文件。
使用:wprevious,保存当前文件,并编辑上一个文件。
使用:args 显示文件列表。
:n filenames或:args filenames 指定新的文件列表。
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件。vim -p files: 打开多个文件,每个文件占用一个标签页。
:tabe tabnew -- 如果加文件名,就在新的标签中打开这个文件, 否则打开一个空缓冲区。
^w gf -- 在新的标签页里打开光标下路径指定的文件。
:tabn -- 切换到下一个标签。Control + PageDown,也可以。
:tabp -- 切换到上一个标签。Control + PageUp,也可以。:tab split -- 将当前缓冲区的内容在新页签中打开。
:tabc[lose] -- 关闭当前的标签页。
:tabo[nly] -- 关闭其它的标签页。
:tabs -- 列出所有的标签页和它们包含的窗口。
:tabm[ove] [N] -- 移动标签页,移动到第N个标签页之后。 如 tabm 0 当前标签页,就会变成第一个标签页//*******************关闭子窗口***********************************
:qall -- 关闭所有窗口,退出vim。
:wall -- 保存所有修改过的窗口。
:only -- 只保留当前窗口,关闭其它窗口。(CTRL-W o)
:close -- 关闭当前窗口,CTRL-W c能实现同样的功能。 (象 :q :x同样工作 )
. --重复上一个编辑动作//*******************宏***********************************
qa:开始录制宏a(键盘操作记录)宏的名字叫a
q:停止录制
@a:播放宏a//*******************文件加解密***********************************
vim -x file: 开始编辑一个加密的文件。
:X -- 为当前文件设置密码。
:set key=   去除文件的密码。

VIM_readme相关推荐

最新文章

  1. Linux服务器默认建立的LVM逻辑卷磁盘空间分配不合理,根目录不够用,如何缩减和扩展逻辑卷?...
  2. mysql5.7环境搭建_mysql5.7.13环境搭建教程(解压缩版)
  3. linux mysql误删,linux下MySQL安装与删除 (Ubuntu)
  4. 1021 个位数统计 (15 分
  5. java unsafe 类_Java的Unsafe类
  6. QT案例:登录对话框——主窗口
  7. c语言除法的编译,怎样代替除法指令
  8. GNU/Linux下的开发环境
  9. 电影院订票系统mysql表结构_电影院票务管理系统数据库设计(2)
  10. 本草纲目pdf彩图版下载_本草纲目pdf下载|本草纲目彩色插图版PDF完整版_ - 极光下载站...
  11. FedEx联邦快递查询寄件电子面单API接口接入教程-快递100API(以国际电子面单接口为例)
  12. 每日学习笔记(12)
  13. 【毕业设计】空气质量检测仪(环境检测盒子)- stm32 单片机 嵌入式 物联网
  14. v-if导致用ref取不到元素的解决办法
  15. Android单元测试技巧
  16. 缺一位身份证号码时识别计算
  17. bootstraptable treeGrid 懒加载_为 Vue 的惰性加载加一个进度条
  18. nodejs中使用jwt
  19. cesium实现晴,雨,雾,雪等效果
  20. 手把手教你如何在Unity中使用UnityGoogle.Protobuf3(三) 序列化与反序列化

热门文章

  1. Linux Glibc幽灵漏洞紧急修补方案【转】
  2. The NPF or NPCAP service is not installed, please install Winpcap or Npcap aand reboot的解决方法
  3. Oddball 怪人一个
  4. 人行计算机面试真题,2018中国人民银行招聘面试真题(附答案)
  5. 可擦写光盘不能擦除和刻写_什么是可擦写光盘 什么时候要用到可擦洗光盘(擦除光盘)...
  6. 中华英才网后续难雄起
  7. java计算机毕业设计HTML5游戏网站设计与实现源码+mysql数据库+系统+lw文档+部署
  8. MyBatis发展历史
  9. 节日祝福 html,节日祝福语大全
  10. 【无标题】HTML做一个简单漂亮的宠物网页(纯html代码)宠物 5页(二级菜单)