vim的基本使用方法
头记:vim作为被大多数程序员所推崇的编辑器,是源于它的自由灵活以及令人舒服的输入模式,但对于新手来说无疑是个噩梦(需要记太多的命令),
而作为使用了vim有一段时间的我来说,总结下常用的命令,以备新手快速进入vim,感受它的强大以及令人着迷的处理方式。
以下只介绍常用的使用方式,对于繁重的概念以及高难度的操作留待大家以后的兴趣去探索。
初次用vi/vim打开文件既可以使用以下命令:
移动命令:
1.hjkl 四个按键对应左下上右,这四个按键是用来移动光标(同上下左右方向键),可以和数字组合使用如:nh (向左移动n步),其它方向同样。
2.wb 这两个按键是我最常使用的,分别代表向右向左移动一个单词的长度。
3.gg 和 G 其中gg是移动到第一行,G移动到最后一行。
4.nG 移动到第n行。
还有很多的移动命令如:H L ...
插入文本:
1.iao 这三个按键对应这三种不同的插入方式,i在光标前插入(默认光标为方块),a则是在光标后插入,o为新起一行并进入插入模式.还有其它的如:O向光标的上面插入新行并进入插入模式.
按esc可以进行移动命令
选择文本:
1.v 按v进入选取模式从当前光标开始,之后移动光标即可进行选取。
2.V 按V直接选取一行,后续步骤同上。
3.ctrl + v 这个可以说是vi中非常好用的选取器了,可以进行块选择,后续同样可以使用hjkl或者wb来进行块的选取。
文本的剪贴,复制,粘贴以及撤销:
1.对上边选择的文本可以使用d剪贴,y复制。
2.dd 剪贴当前行也可以使用ndd剪贴从当前开始的n行。
3.yy 复制当前行,也可以使用nyy 同上。
4.p 粘贴剪贴的内容或者复制的内容,一般会保留原格式粘贴,即用dd或者yy则粘贴到下一行,进行文本局部选取粘贴会在当前行。
5.P 向上粘贴,格式同上。
6. u 撤销上一次操作。ctrl + r 与u操作相反。
相对高级一点的复制和粘贴:(但是非常有用)
vi/vim中内置有很多的寄存器,供分别使用.
1. "ayy 保存当前行在a寄存器中,"anyy 复制n行到a寄存器或者"any 按回车。寄存器从a-z,0-9非常之多。
2. +这两个寄存器为系统剪贴板,可以复制内容到剪贴板供外边使用,使用同上如:"+yy。
3."ap 粘贴a寄存器中的内容,其它的也一样。
搜索模式:
1. / 向下搜索 如: /test 搜索test 可以使用vim中的正则,使用n移动到下一个搜索到的词,N移动到上一个搜索到的词。
2. ? 同上,只是使用n是向上搜索,N向下。
加入书签:
1.m 如:mk在当前行加入标签k 使用`k(注意是esc下的`)跳到k标记处。
命令模式:
可以说命令模式是vim的核心了,至少我现在使用时就是这种感觉。
(后续匹配文本都可以使用vim中的正则进行选定,这里不介绍,以免增加使用难度,不过建议好好了解下正则)
1. :%g/需要匹配的内容/d 这条命令删除整个文件中匹配到内容的所有行,其中%号代表的是进行全文本匹配,也可以使用{n,m}g//d表示从n开始到m结束,n与m都可以省略,默认即从当前行开始。
2. :s/需要匹配的文本/替换的文本/g 这条命令用来进行替换匹配到的文本,方法同上。
3. :s/\(匹配到的文本\)/插入的内容\0/g 这条命令与前边命令不同之处在于用()把需要匹配的文本括起来,后边则可以使用\0进行还原,实现插入操作,如分别括起来多个,则可以使用\1以此类推。
4. :!cd /home 这条命令的意思是调用linux系统下bash中的cd命令,并切换到家目录,可以使用:!ls -l显示当前工作目录下的文件信息。
5. :reg 查看vim中寄存器的内容,可以随时查看寄存器中的内容。
5 :h 调出帮助文件,非常有用。
文本文件的保存:
1. :w 修改的内容写入原文件(vim编辑时会生成.swap临时文件)。
2. :q 退出而不保存。
3. :wq 保存并退出。
4. :w! 强制写入,退出命令也可以使用。
5. :x 如果有改变则写入,否则退出。(最常使用)
vi多屏:
1. :sp 以横屏的模式显示另外一个文件。:vsp 以竖屏的方式显示。:ex 切换到其它文件当前文件消失。
2. ctrl+w 在两个文件切换。
vi合并其它文件:
1. :r path 把path文件追加到光标后。
附上vim替换操作以及正则:
一、正规表达式:
替换命令: s///g 下边的命令可以组合起来使用
无 : 只对指定范围内的第一个匹配项进行替换
g : 对指定范围内的所有匹配项进行替换
c : 在替换前请求用户确认
e : 忽略执行过程中的错误
二、元字符:
. : 匹配任意一个字符
[abc] : 匹配方括号中的任意一个字符。可以使用-表示字符范围。
[^abc] : 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
\d : 匹配阿拉伯数字,等同于[0-9]
\D : 匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x : 匹配十六进制数字,等同于[0-9A-Fa-f]
\X : 匹配十六进制数字之外的任意字符,等同于[^[0-9A-Fa-f]
\w : 匹配单词字母,等同于[0-9A-Za-z]
\W : 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z]
\t : 匹配<TAB>字符
\s : 匹配空白字符,等同于[ \t]
\S : 匹配非空白字符,等同于[^ \t]
*特别注意:如果需要查找元字符则需要\跳出
表示数量的元字符
* : 匹配0-任意个
\+ : 匹配1-任意个
\? : 匹配0-1个
\{n,m} : 匹配n-m个
\{n} : 匹配n个
\{n,} : 匹配n-任意个
\{,m} : 匹配0-m个
表示位置的符号
$ : 匹配行尾
^ : 匹配行首
\< : 匹配单词词首
\> : 匹配单词词尾
如有错误之处欢迎指出。
vim的基本使用方法的更多相关文章
- 关于VI&VIM的基本使用方法
本文转载:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法, ...
- vim 乱码问题的方法参考
linux 中设置当前用户的系统默认编码为 UTF-8 格式解决 vim 乱码问题的方法参考 任侠 2013-05-02 11:58 电脑基础 抢沙发 13,732 views 在使用 l ...
- vim recording的使用方法
使用vim时无意间触碰到q键,左下角出现"recording"这个标识,觉得好奇,遂在网上查了一下,然后这是vim的一个强大功能.他可以录 制一个宏(Macro),在开始记录后,会 ...
- Vi/Vim查找替换使用方法
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...
- [转]Vi/Vim查找替换使用方法
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
- vi/vim 查找替换使用方法
http://wzgyantai.blogbus.com/logs/28117977.html vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记 ...
- Ubuntu12.04无法使用vim系统剪贴板解决方法
以前在 vim 下工作需要在 vim 和其它的编辑器之间复制东西,使用 Shift + Ctrl + v/c.感觉这样很不方便,今天在网上搜索了以下可以用 “+y/p,但是自己实验怎么也不行,在命令模 ...
- Vi/Vim查找替换使用方法【转】
原文地址:http://wzgyantai.blogbus.com/logs/28117977.html vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂 ...
- Secure CRT中解决vim高亮设置的方法
此文主要是解决vim编程中高亮显示的.原因是: 1.默认情况下,SecureCRT是有自己的终端显示颜色.这样在我们编程中不利于阅读内容. 2.我们必须到Linux系统中进行改进才能真正解决这样的问题 ...
随机推荐
- MySQL 数据表修复及数据恢复
1. MYSQL数据表在什么情况下容易损坏? 服务器突然断电导致数据文件损坏. 强制关机,没有先关闭mysql 服务等. 2. 数据表损坏后的主要现象是什么? 从表中选择数据之时,得到如下错误:I ...
- java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
后台报出如下错误: Caused by: java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数 ORA-00 ...
- Swift - 38 - 枚举的基本语法
//: Playground - noun: a place where people can play import UIKit // 创建一个枚举类型就相当于创建了一个新的数据类型, 所以首字母应 ...
- Java前端Rsa公钥加密,后端Rsa私钥解密(目前还不支持中文加密解密,其他都行)
Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...
- QT 5.1.1 for Android 开发环境搭建与配置【Windows 7】
前言:本人操作系统为Windows7 64位,用的是32位的安装包,32位系统没有验证. 一.首先下载以下安装包,如果提供的链接失效请自行下载: (1) Android SDK (Windows 32 ...
- jsp页面间的传值
很多的时候我们只是把我们需要的数据,查询出来,然后用request.setAttribute("" ,"" )方法保存这个数据集合.再在我们能跳转到的下一个js ...
- 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码
直接拨号.将电话号码传入拨号程序.调用拨号程序.调用系统浏览器浏览网页.调用系统程序查看联系人.显示系统设置界面和显示Wi-Fi设置界面代码 拨打号码的代码如下: Intent callIntent= ...
- js中的apply call 操作小结(参考自网络)
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 说明: call ...
- Linux_install jdk
Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- c++ 输出时间
[root@GZMJ_Logic_2 ]# cat lys.cpp #include "stdio.h" #include <iostream> #include< ...