在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实用手册 - 基础篇(打开、关闭、移动、搜索)相关推荐

  1. AutoCAD实用技巧基础篇

    AutoCAD 实用技巧基础篇 课 程描述: 本教程 内容系统.全面,指导读者完成从学习基本命令,到 综合利用这些命令绘制平面图形,再到了解绘制工程图的方法.技巧及AutoCAD实际应用的全过程. 版 ...

  2. 【拒绝花里胡哨】运维实用手册shell篇(无废话,全程暴力干货)

    目录 文件 sort排序 find查找 vim编辑器 归档解压缩 文件ACL权限控制{ svn 恢复rm删除的文件 openssl 软件 系统 文件 ls -rtl # 按时间倒叙列出所有目录和文件 ...

  3. dynamo方程怎么写_Dynamo-CodeBlock手册-基础篇

    在Dynamo中,CodeBlock是一个重要且常用的功能.本文根据官方帮助文档做了一个总结,希望对你有用. 在画布的任意空白区域双击鼠标左键,就能调出这个节点. CodeBlock功能块 我们可以在 ...

  4. Vim学习笔记-基础篇

    vim是vi改进版 windows 体验版 gvim 基本命令 $ vim # normal模式:q(quit) # 退出# 进入编辑insert模式(6种) i(insert) # 光标前插入 a( ...

  5. Eclipse断点调试(debug)实用技巧——基础篇

    一.首先要设置断点:在代码里需要调试的地方,鼠标双击代码行号的左边,再次双击即可取消断点. 二.启动服务开始调试: 方法一,例如上图的代码中,鼠标点击main方法-->右键Debug As--& ...

  6. Eclipse之断点调试(debug)实用技巧——基础篇

    首先要设置断点:在代码里需要调试的地方,鼠标双击代码行号的左边,再次双击即可取消断点. 启动服务开始调试:方法一,例如上图的代码中,鼠标点击main方法-->右键Debug As-->Ja ...

  7. Python + Selenium 基础篇 - 打开和关闭浏览器

    1.首先要下载浏览器对应的driver,并放到你的python安装目录 Chrome浏览器(chromedriver): http://npm.taobao.org/mirrors/chromedri ...

  8. Docker入门(基础篇+高级篇)

    Docker 参考手册基础篇+高级篇 一.Docker常用命令 docker run docker stop docker start 进入一个运行中的容器 docker ps docker imag ...

  9. dos 下如何使用chown -r oracle:dba,oracle dba系统安装实用手册.doc

    Oracle DBA实用手册 --安装篇 DOYENSEER doyenseer@ 文试卷,计算机标榜,他最先实现了络交易高中语文,语文试卷,计算机可行 版权声明 本文档的版权归作者所有. 本文档可以 ...

最新文章

  1. MyBatis一对多双向关联——MyBatis学习笔记之七
  2. [教程]MongoDB 从入门到进阶 (User系统)
  3. java亲密数的解题思路,算法解题思路总结 - jjhgx的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. linux下安装ftp服务器
  5. Codeforces Round #165 (Div. 2) A - Fancy Fence
  6. 你不知道的javascript事件
  7. C++ 哪些函数不能声明成虚函数
  8. Codeforces 1254C/1255F Point Ordering (交互题)
  9. .net 实现文件下载2
  10. window10安装python2.7_Windows10-python2.7安
  11. mysql查询语句有点难_Mysql惯用函数,难点,注意_mysql
  12. About KaiSarH
  13. 前端安全系列之二:如何防止CSRF攻击?
  14. 深入浅出设计模式---3、代理模式和工厂模式
  15. Docker学习笔记 1
  16. csv文件行数超过软件上限解决方案
  17. 用python自动制作ppt第二讲——插入文字的两种方法和追加文字
  18. javascript 数组对象 方法
  19. 2010总结,2011展望
  20. IC+九旸 ,IP1810,QFP128 , 8端口10 / 100Mb + 2端口10/100 / 1000Mb交换机

热门文章

  1. 【深度学习】深入浅出transformer内部结构
  2. 【2021年度训练联盟热身训练赛第四场】Game Map(python C++)
  3. python【力扣LeetCode算法题库】13- 罗马数字转整数
  4. 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(一)
  5. 5.1 上网本安装安卓x86_生信工具 | antiSMASH 安装教程
  6. android检查usb广播,Android 检测USB 音频设备
  7. 网站推广期间如何做好用户体验中的交互体验设计?
  8. linux c不占用cpu的延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  9. Java序列化闲聊:序列化和Json
  10. python二维数组初始化