胖爷的vim实用手册 - 基础篇(打开、关闭、移动、搜索)
在linux中,常用的编辑器,大概有2个半,vi或者vim,emacs,还有个简单的nano。有人说程序猿分为三种,一种是使用vim的,还有一 种使用emacs的,剩下的都是第三种。用现在一个时髦的比方,普通程序猿用emacs或者类似的vs,文艺程序猿用vim,二逼程序猿用其他。由此可见 VIM的强大程度,这是一款非常适合程序员使用的,熟练了以后会上瘾的编辑器。vim设计了多种模式,常见的模式包括命令模式,编辑模式,命令行模式等, 这个也是和其他编辑器一个很不相同的地方,用习惯了ms的各种文本编辑器,可能会比较不习惯,但是如果将模式熟悉了就可以发现在不同的模式之间切换是很平 常的事情,而且带来的好处是更少的按键和更快的输入。
VIM是VI的优秀后裔,虽然VI的后裔中不仅仅包括VIM,但是VIM是实现对VI的兼容性最好的编辑器,其他的后裔还包括STEVIE, ELvis, NVi, Vile等。除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折叠,脚本扩展等等。
vim我也是初学乍练,开始也是因为在linux中,写shell用这个比较方便,同时也没有更多的选择,只是被迫的使用,可一来二去,当度过了记忆那 些头疼的键盘指令后,才开始渐入佳境。与windows种那些常用的文本编辑器如:vs,word,notepad比较,vim入门显然是比较难的,可如 果用习惯了以后,也许就会迷恋上这种不使用鼠标甚至小键盘的设计。废话少说,言归正传,把使用心得记录下来,供今后参考。
一、三种模式
vim的工作模式:
1.命令模式(Command mode) ESC进入命令模式。
2.编辑模式(Insert mode) ESC可退出此模式。
3.命令行模式(Command line mode) 输入":"进入此模式。
深入理解这三种模式,是vim的根本。
二、启动、保存与退出
打开vim编辑文档,常用的无非是:vim filename的方式。
至于还有写蛋疼的譬如定位到第几行之类的参数,一般用不着,
进入vim可以用xxxG,或者:xxx来定位,不记也罢。
还有两种用的到的打开方式,一种是同时打开多个文件,
如:
vim file1 file2 file3
vin file*
vim会依次打开3个文件,使用命令行::bp :bn在文件之间切换。
这种方式,我认为一个是不同文件之间复制内容时比较有用,
还有一个就是可以在shell命令行种,使用vim xxxx*一类的通配符,
同时打开一类文件进行编辑。
命令 执行的操作 记忆方法
------------------------------------------------------
:bn 下一个文件
:bp 上一个文件
还有一个分隔窗口的打开方式,当打开file1时,使用命令行:
:sp file2,便可以使用分隔窗口,打开file2,这个在比较文件,
或者几个文件之间复制内容时,是非常有用的。
命令 执行的操作 记忆方法
------------------------------------------------------
:sp file 新建分隔窗口,打开file
Ctrl+w+方向键 切换到前/下/上/后一个窗格
Ctrl+w+h/j/k/l 同上
Ctrl+ww 依次向后切换到下一个窗格中
常用的退出和保存命令无非就是w,q,!进行组合
比较有意思的是:e,有时我会查看正在更新的日志文件,
当日志文件有更新时,可以简单的使用这个命令,
将最新的文件读入到vim中。
命令 执行的操作 记忆方法
------------------------------------------------------
:q 退出 quit
:w 存盘 write
:e 打开新文件
:r 读取文件到VI read
:! 强行
------------------------------------------------------
常用的组合如下:
:wq 保存并退出
:w 只保存
:q! 退出不保存
:q
下面是一些类似茴香豆的写法的命令,仅供记忆与参考。
-----------------------------------------------------------
启动编辑器
命令 功能
vi +100 foo
打开文件foo并把光标定位在100行
vi +/pat foo
打开文件foo并把光标定位在pat第一次出现的行
vi +foo 打开文件foo,把光标定位在文件尾
vi foo1 foo2 ...
打开文件foo1,用n切换到foo2等
vi -r foo
把交换文件里的内容恢复到缓冲区里
vi -R foo
一只读模式打开foo文件
保存与退出
命令 功能
:w 保存文件并继续编辑
:w bar
同微软Windows操作系统中的“另存为……”
:w! bar
同上,但是覆盖现存的文件bar
:n1,n2w foo
把n1到n2之间的行保存到文件foo
:n1,n2w>>foo 把n1到n2之间的行添加到foo文件尾
:.w foo
把当前行保存到文件foo
:$w foo
把最后一行保存到文件foo
:x 保存并退出编辑器
:wq 同上
:q 如果文件的内容没有变化则退出编辑器
:q! 放弃修改并退出编辑器
:set nu 显示行号 number
:set nonu 隐藏行号 no number
----------------------------------------------------------
三、移动
关于移动,我觉得可能是vim最有意思的地方,因为vim设计的精髓,就是不使用
鼠标与小键盘也可以完成所有工作。
移动,多是在命令模式下完成,如果进入到编辑模式,则只有使用方向键了。
下面是我常用的一些命令与快捷键:
页面之间移动,常用的无非就是下面四个组合。
快捷键 功能 记忆方式
--------------------------------------------------------------
Ctrl + f 翻到下一页(向前翻页) front
Ctrl + b 翻到上一页(向后翻页) back
Ctrl + u 向前翻半页
Ctrl + d 向后翻半页
--------------------------------------------------------------
vim行之间移动是比较有意思的,vim使用h,j,k,l代替方向键在行之间、字之间移动,
且使用注入w,b之类的按照词移动的方式,则明显比vs快捷的多。
快捷键 功能 记忆方式
--------------------------------------------------------------
h 左
j 下一行
k 上一行
l 右
--------------------------------------------------------------
快捷键 功能 记忆方式
--------------------------------------------------------------
^ 移到行头 往上就到行头了(象形)
$ 移到行尾 写完一行就要给一行的钱
w 下一个单词 word
b 前一个单词 behind(在。。。后面)
e 下一单词尾 end
p 向前移动到单词首
0或| 移动到行首
30| 移动到第30列
H 将光标定位到屏幕第 1 行行首
M 将光标定位到屏幕中间行行首
L 将光标定位到屏幕最后 1 行行首
G 光标定位到文件的最后 1 行行首
#G 跳到某一行 大哥(G)说到哪就到哪
1G 2G 3G 将光标定位到数字所示行行首
--------------------------------------------------------------
B、E和W命令的作用与b、e和w的作用一样,只是后者忽略了标点符号。
下面细说一下,比较有用的按照行号或者文件百分比移动的情况。
快捷键 功能 记忆方式
--------------------------------------------------------------
gg 跳到文件首
1G 跳到文件首
40G 跳到第40行
G 跳到文件尾
40% 跳到文档40%的位置
--------------------------------------------------------------
有时,会需要显示行号。常用的下面两个。
快捷键 功能 记忆方式
--------------------------------------------------------------
[Ctrl+g] 显示当前行号及文件的百分比
:set nu 显示行号
:set nonu 取消现实行号
--------------------------------------------------------------
还有一个,尤其是对于编写程序比较方便的块移动的方式,多是用各种大中花括号,
尤其是%对于写乱了套的程序猿来说,还是非常有用的,
这个写程序是多自己试试:
快捷键 功能 记忆方式
--------------------------------------------------------------
) 定位到下一句开始
( 定位到当前句开始
{ 上一段
} 下一段
% 对应括号
[
]
--------------------------------------------------------------
方括号的,我忘了。。。懒得试了。
四、搜索
常用的无非是下面的5个指令。
快捷键 功能 记忆方式
--------------------------------------------------------------
/search_string 从当前行向下查找“search_string”
?search_string 从当前行向上查找“search_string”
n 继续查找下一个“search_string”
N 继续查找上一个“search_string”
/serrch_string\c 忽略大小写
--------------------------------------------------------------
还有一些使用正则表达式进行匹配的方式,以后再进行补充。
另外,按说替换应该与搜索同列一个专题,但是。。。懒得写了,那个以后写编辑篇的时候,
再说吧。
转载于:https://www.cnblogs.com/jinshoucai/archive/2011/11/08/2241180.html
胖爷的vim实用手册 - 基础篇(打开、关闭、移动、搜索)相关推荐
- AutoCAD实用技巧基础篇
AutoCAD 实用技巧基础篇 课 程描述: 本教程 内容系统.全面,指导读者完成从学习基本命令,到 综合利用这些命令绘制平面图形,再到了解绘制工程图的方法.技巧及AutoCAD实际应用的全过程. 版 ...
- 【拒绝花里胡哨】运维实用手册shell篇(无废话,全程暴力干货)
目录 文件 sort排序 find查找 vim编辑器 归档解压缩 文件ACL权限控制{ svn 恢复rm删除的文件 openssl 软件 系统 文件 ls -rtl # 按时间倒叙列出所有目录和文件 ...
- dynamo方程怎么写_Dynamo-CodeBlock手册-基础篇
在Dynamo中,CodeBlock是一个重要且常用的功能.本文根据官方帮助文档做了一个总结,希望对你有用. 在画布的任意空白区域双击鼠标左键,就能调出这个节点. CodeBlock功能块 我们可以在 ...
- Vim学习笔记-基础篇
vim是vi改进版 windows 体验版 gvim 基本命令 $ vim # normal模式:q(quit) # 退出# 进入编辑insert模式(6种) i(insert) # 光标前插入 a( ...
- Eclipse断点调试(debug)实用技巧——基础篇
一.首先要设置断点:在代码里需要调试的地方,鼠标双击代码行号的左边,再次双击即可取消断点. 二.启动服务开始调试: 方法一,例如上图的代码中,鼠标点击main方法-->右键Debug As--& ...
- Eclipse之断点调试(debug)实用技巧——基础篇
首先要设置断点:在代码里需要调试的地方,鼠标双击代码行号的左边,再次双击即可取消断点. 启动服务开始调试:方法一,例如上图的代码中,鼠标点击main方法-->右键Debug As-->Ja ...
- Python + Selenium 基础篇 - 打开和关闭浏览器
1.首先要下载浏览器对应的driver,并放到你的python安装目录 Chrome浏览器(chromedriver): http://npm.taobao.org/mirrors/chromedri ...
- Docker入门(基础篇+高级篇)
Docker 参考手册基础篇+高级篇 一.Docker常用命令 docker run docker stop docker start 进入一个运行中的容器 docker ps docker imag ...
- dos 下如何使用chown -r oracle:dba,oracle dba系统安装实用手册.doc
Oracle DBA实用手册 --安装篇 DOYENSEER doyenseer@ 文试卷,计算机标榜,他最先实现了络交易高中语文,语文试卷,计算机可行 版权声明 本文档的版权归作者所有. 本文档可以 ...
最新文章
- MyBatis一对多双向关联——MyBatis学习笔记之七
- [教程]MongoDB 从入门到进阶 (User系统)
- java亲密数的解题思路,算法解题思路总结 - jjhgx的个人空间 - OSCHINA - 中文开源技术交流社区...
- linux下安装ftp服务器
- Codeforces Round #165 (Div. 2) A - Fancy Fence
- 你不知道的javascript事件
- C++ 哪些函数不能声明成虚函数
- Codeforces 1254C/1255F Point Ordering (交互题)
- .net 实现文件下载2
- window10安装python2.7_Windows10-python2.7安
- mysql查询语句有点难_Mysql惯用函数,难点,注意_mysql
- About KaiSarH
- 前端安全系列之二:如何防止CSRF攻击?
- 深入浅出设计模式---3、代理模式和工厂模式
- Docker学习笔记 1
- csv文件行数超过软件上限解决方案
- 用python自动制作ppt第二讲——插入文字的两种方法和追加文字
- javascript 数组对象 方法
- 2010总结,2011展望
- IC+九旸 ,IP1810,QFP128 , 8端口10 / 100Mb + 2端口10/100 / 1000Mb交换机
热门文章
- 【深度学习】深入浅出transformer内部结构
- 【2021年度训练联盟热身训练赛第四场】Game Map(python C++)
- python【力扣LeetCode算法题库】13- 罗马数字转整数
- 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(一)
- 5.1 上网本安装安卓x86_生信工具 | antiSMASH 安装教程
- android检查usb广播,Android 检测USB 音频设备
- 网站推广期间如何做好用户体验中的交互体验设计?
- linux c不占用cpu的延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
- Java序列化闲聊:序列化和Json
- python二维数组初始化