VIM常用命令集锦

话说

笔者早就想对这方面来个“大扫除”拉。学习有多种方式,你可以零碎的学习,也可以系统的学习。因为命令很琐碎,如果每次用的时候再去查,就会影响效率,而且关键时刻不能显摆哈哈。今天就对VIM常用命令做个总结。笔者博客的意义在于,每个命令都是结合实际运用场景来讲的,而不只是扔一堆命令过来。

难度系数:★★★☆☆
建议用时:2H

来源:《Linux鸟哥私房菜》vim章节,感谢鸟哥,笔者只是实践,不算侵权吧?

目录

一、vim理论
二.串联琐碎命令
三、Visual Block
四、多文件编辑
五、多窗口编辑
六、常用命令示意图
七、总结

一、vim理论

VIM有3种模式:一般模式、编辑模式、命令行模式,每种命令都需要在对应的模式下操作下有效。
一般模式 ==》编辑模式: i I a A ……
一般模式到命令模式: : / ?
命令模式、编辑模式==》一般模式 ESC
注意:命令模式无法直接到编辑模式 搞清楚这个,就知道什么情况下该用什么命令。

二.串联琐碎命令

命令是琐碎的,最好的方式就是串联起来。以下就是连贯思路训练命令,自己找个文件灵活实验即可。笔者的步骤都是按照教材执行的,先命令,后解释,而且是连贯执行的,有逻辑的,而不是仅仅只为命令而命令;读者最好先看后面解释,心中大体有数后然后安装命令操作。
声明:注入输入法状态:英文状态

1、vim a.txt 打开一个文件
2、set nu   设置行号  
set nonu  取消设置行号
3、gg (一般模式)  到首行
G  查看多少行、到末行
58G 直接到58行
:58  也是直接到58410G 向右边移动10个字符
5、 gg 跳转到首行
6、 /application  查找application出现在第几行?
7、:16,31s/application/mei/gc  把16~31行之间的application替换为mei,并且在替换的时候给提示
      :16,31s/application/mei/g    不给提示替换(c表示confirm)
8、u  撤销(反悔了,撤销操作);或者:q!不保存,那么所有的操作都不保存了
916G ==>16yy(16 lines yanked) ==>G ==>p  复制16-31行这16行,并且粘贴到最后一行之后
补充:p为在光标所在行下一行粘贴,P在光标所在行上一行粘贴
101853G ==>dG(删除从光标所在到最后一行数据)   删除末尾1611、:w mei.config  把刚才操作后的文件另存一份
12990G ==>10x 到第990行向后删除10个字符
13gg ==>O 在第一行之前新增一行,并且输入“Today is Sunny! Leg's go!” 补充:o O 表示:o表示在光标所在行下一行插入一行,跟Enter一样;O表示在光标所在行上一行插入,而且直接进入编辑模式。 14、:wq! 保存后离开

然后傻瓜式的操作以上命令,就像“警察捉小偷”游戏一样,操作N遍,就可以在关键时刻显摆拉。
笔者一直认为:如果你刻意专业练习,就会快速掌握;如果等待自然熟练,那就是时间问题了。还记得盲打么?如果你依靠:多聊天、多打游戏来熟悉键盘,我依靠专业训练指法联系,几周过去,我肯定比你牛。因为专注和刻意练习的效果差别就是量级的差别。很多事情都是如此。

三、Visual Block

以上命令太基础?来点好玩的:Visual Block ——块选择
我们要实现类似在word、Notepad++ 或者subline test中的选择块的功能(Alt + 选择)
应用场景:比如在配置多个服务器主机名的时候,需要快速复制,如何复制一块呢?
复制之后样子是这样的:

192.168.1.1     host1.class.net host1
192.168.1.2     host1.class.net host1
192.168.1.3     host1.class.net host1
192.168.1.4     host1.class.net host1
192.168.1.5     host1.class.net host1
192.168.1.6     host1.class.net host1
192.168.1.1     host1.class.net host1
192.168.1.1     host1.class.net host1
192.168.1.1     host1.class.net host1
192.168.1.1     host1.class.net host1
192.168.1.1     host1.class.net host1
192.168.1.1     host1.class.net host1

其实很简单:
这么做:
1)vim 打开该文件;
2)Ctrl + v 方式进入Visual Block模式;
3)移动光标选择需要选择的,就会反白选择;
4)y 复制;
5)p 粘贴

结论
块选择按键意义:

v 字符选择
V 行选择
Ctrl + v 块选择,可以用长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除

四、多文件编辑

场景:你需要把一个文件的内容复制到另外一个文件,如何做?
答曰:打开2个窗口,然后Command + C ; Command + P
这样也可以,如果你想用命令呢?比如10yy,然后p可以么?不可以的,因为每个vim都是独立的。

还有一种方法是同时打开2个文件,然后执行上述命令

vim host.txt ./myFiles/b.txt 同时打来2个文件
1G 复制指定行
10yy
:files 查看打开的文件
:n 切换到打开的下一个文件
:N 切换到打开文件的上一个文件

一图胜千言

就是这么好玩!

五、多窗口编辑

在Excel、Word中都有切割窗口或者冻结窗口的功能,方便在很长很长的文档中对比修改,而不用来回换页数。
加入几万页呢?也Ctrl + f (下一页),Ctrl + b (上一页),哈哈。

很简单:

:sp [filename] 切割窗口。如果无参数,切割当前窗口;如果有参数,打开新窗口
ctrl + w +j 移动到下方窗口 等同于:ctrl + w + ⏬
ctrl + w +k移动到上方窗口 等同于:ctrl + w +⏫
:q 离开

可以理解为:split page
还是一图胜千言

打开多个窗口呢?
:sp ./myFile/b.txt 指定文件名即可

很方便吧?总比找半天找不到冻结窗口在哪里来要好吧?而且,一个命令打开一个窗口,我的感觉和鸟哥一样,感觉很酷炫。

六、常用命令示意图

说了那么多命令,不就是死记硬背么?是的。
其实,世界上很多知识性的东西都是死记硬背。死记硬背说的知识记忆的方式,不论你通过什么方式,反正最终都是要记住,有本事你不记忆,只靠理解,在这个偌大的世界走走看?

用鸟哥一张图总结下零碎命令吧?

.xmind链接,需要的拿去不谢。
这个好像不能上传附件,暂且搁置吧。

七、总结

绝知此事要躬行,实际中多多刻意练习,熟的就像说话一样,就不会忘记啦。

好了,晚安,下期再会!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全局的情况下:即所有用户都能用这个配置文件地址:/etc/vimrc在文件中添加:setfileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936settermencoding=utf-8setencoding=utf-8如果只修改个人的vim配置情况:需要把/etc/
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图—入门到进阶什么是vim
      vim正则匹配:空行:/^$/  /^[\t]*$/注释行:/^#/ /^[\t]*#/:1,$s/\([Rr]\)oot/\1ename/:1,$s/\(square\)and\(fair\)/\2and\1/ 
$select-editorSelectaneditor.Tochangelater,run'select-editor'.1./bin/ed2./binano<----easiest3./usr/bin/code4./usr/bin/vim.basic5./usr/bin/vim.tinyChoose1-5[2]:4
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下预览图安装工具:u盘、manjarokdeminimal20.0.3、win32DiskImager提取码:qt9f进bios、选择u盘启动、改语言、改时区、挂载分区(文件系统ext4、在200M左右的一个FAT分区上挂载/boot/efi)、安装安装很简单,按提示
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置vi文本编译器,其他的文本编译器则不一定存在很多软件的编译接口都会主动调用vivim有很强的程序编译能力,可以主动的一字体颜色辨别语法的正确性,方便程序设计因为程序简单,编译速度相当快vi的使用一般命令模
主机名字太长,怎么修改?  1.sudovim/etc/hostname 修改内容为wel,  本地主机名 2.sudovim/etc/hosts      修改主机名为wel,用于网络连接中主机名的识别 3.reboot 
目录#事故现场#事故原因#解决方法方法一:使用notepad转换方法二:使用vscode转换方法三:使用vim转换#参考#事故现场执行shell脚本文件,报错::notfound.sh:6:coreinstall.sh:查看脚本文件第6行,发现是空行;#事故原因window下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n
1、保存并退出linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如:vimtest.c之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按Esc退出插入编辑状态,然后输入冒号加wq,点击Enter即可,完整的命令如下:wq如下图:  退出后,如果想要编译
概述使用VIM作简单字数统计背景想做一个简单的字数统计环境OSwin10shellmintty-2.9.41.需求概述需求需求统计文段内字符的数量支持自定义字符集2.方案1:vim自带统计概述vim自带方案操作定位到文段内某行vi
经典版下面这个键位图应该是大家最常看见的经典版了。对应的简体中文版其实经典版是一系列的入门教程键位图的组合结果,下面是不同编辑模式下的键位图。 
ssh是一个安全连接协议。作用两个:1.远程连接协议,2.远程文件传输协议协议默认端口为:22。 修改默认端口,再到ssh服务配置文件位置  vim/etc/ssh/ssh_config这条命令就可以修改了。按下ESC键,再输入:x 也可以退出vim。(和:q! 相同)修改注意:1.端口号在0-65535之间。2.别人
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢
在Vim中,有时需要将tab转换成space。使用ret命令(replacetab)。[range]ret[ab]![new-tabstop]举例:将第一行到文件尾的tab转换成space,每个tab用4个space替代。:setexpandtab:%ret!4如果没有给定4,则用当前的tab宽度设定替换为space。 相关配置文件命令::settabstop=4设
分屏命令记不得文件名就输入.可浏览文件命令英文功能:sp[文件名]split横向分屏:vsp[文件名]verticalsplit纵向分屏    切换分屏窗口先按Ctrlw切换窗口命令英文功能 wwindow切换下一个窗口 rreverse互换窗口 c
1查看ctags支持的语言ctags--list-languages2查看语言和扩展名的对应关系ctags--list-maps 3对当前目录下所有ctags支持的语言格式文件生成tagsctags-R*缺点很明显,tags会非常大,tags生成会非常慢,而且代码跳转会卡顿。4只对特定文件生成tagsctags`find-name"*.h"`ct
vim基本命令 $vimtutor可以查看基本的vim操作1h(left)j(down)k(up)l(right)q!wqi:insertbeforethecursor(insert)插队嘛,肯定在光标前面A:appendaftertheline(appending)2dw:删除一个单词,保留光标前面部分d$:删除光标之后的同行
~/.vimrc内容如下:setnocompatiblefiletypeoffsetrtp+=~/.vim/bundle/Vundle.vimcallvundle#begin()Plugin'VundleVim/Vundle.vim'Plugin'tpope/vim-fugitive'Plugin'tpope/vim-unimpaired'Plugin'tpope/vim-repeat'Plu
程序:硬盘静态的代码  占用磁盘空间进程:内存运行计算的代码 占用CPU运行内存父进程与子进程  树型结构进程唯一标识: PID僵尸进程找到父进程杀掉  孤儿进程疯狂要内存  危害大 pstree [选项]-a显示完整命令行   -p 查看PID [PID或用户
~/.vimrc"Configurationfileforvimsetmodelines=0 "CVE-2007-2438setnumber"setrelativenumber"显示相对行号(这个非常重要,慢慢体会)setcursorlinesetcursorcolumnsetrulersetscrollbindsetencoding=utf-8colormolokaisyntaxon"开启