vim学习记录(转)
基本功
Vim有三种模式:
- 导航(navigation)模式。 这时候,字母就是上下左右键。
- 输入模式。这时候,你按字母键,才会输入字母。
- 命令模式。需要先输入":" 冒号,才会进入。例如,你输入 :ls , 就相当于运行了
ls
命令。
三个模式的切换
默认的就是导航模式。 你在其他模式下,按"ESC"就回到了导航模式。
在导航模式下,输入 a
, i
, o
等,就可以进入到输入模式。
在导航模式下,输入 :
就可以进入到命令模式。
所以,在用Vim的时候,大家用ESC 会用的非常多。
(顺带提一句,用Vim的时候, 盲打是基础,所以,j
,f
, 左右ctrl
, 都是你长在手上的眼睛。 务必熟悉它们的位置。)
上下左右
h
左j
下k
上l
右
用这四个键的原因是: 所有人的右手食指都应该放在 j 上。 j 和 f 是最容易摸到的两个键了。所以,jhkl 就理所当然的成为 上下左右了。
下一个词,上一个词
w
: 下一个词。 (word)b
: 上一个词。 (backword)
所以,大家要记住,按一下w
相当于按多下l
.
向下一屏,向上一屏。
ctrl + f
: 向下一屏(f = forward)ctrl + b
: 向上一屏(b = backward)
选择多行
shift + v
, 然后上下移动。
搜索
搜索 some_thing: /some_thing
继续搜索下一个: n
搜索前一个: shift + n
在当前整个文件中,替换(也叫全局替换)
:%s/原来的字符串/新字符串/
(如果某个字符串在某一行出现了多次,希望对它所有出现的次数都替换的话,就在末尾加个g
,像这样: :%s/原来的字符串/新字符串/g
)
局部替换
- 先
shift + v
选中若干行 :s/原来的/新的字符串
代码补全
ctrl + n
: 下一个候选ctrl + p
: 上一个候选
转
作者: 申思维
链接:http://www.imooc.com/article/13269
来源:慕课网
vi常用命令
1进入输入模式
i:在当前光标所在处钱插入文本
I:将光标移动到当前行行首,并在行首插入文本
a:在当前光标所在处之后插入文本
A:将光标移动到当前行的行末,并在行末之后插入文本
o:在光标所在行的下面新插入一行,并将光标移动到新行的行首插入文本
O:在光标所在行的上面新插入一行,并将光标移动到新行的行首插入文本
2光标移动
h:向左移动一格
j:向下移动一格
k:向上移动一格
l:向右移动一格
0或^:移动光标到当前行的行首
$:移动光标倒当前行行末
w:移动光标倒下个字开头
e:移动光标倒下个字字尾
b:移动光标回到上个字的开头
nl:在当前行中向右移动n个字符
ctrl+b:屏幕向上翻一页
ctrl+f:屏幕向下翻一页
ctrl+u:屏幕向上翻半页
ctrl+d:屏幕向下翻半页
1G:移动光标到文件第一行
G:移动光标到文件最后一行
3文本编辑
r:替换光标所在处的字符
R:替换光标所到之处的字符,知道按下esc为止
J:把光标所处行的下一行内容接到当前行的行末
x:删除光标所在位置的字符
nx:删除光标所在位置之开始的n个字符
X:删除光标所在位置的前一个字符
nX:删除光标所在位置的前n个字符
dw:删除光标所处位置的单词
ndw:删除光标所处位置的开始的n个单词
db:删除光标所在位置之前的一个单词
ndb:删除光标所在位置之前的n个单词
dd:删除光标所在行
ndd:删除光标所在行开始的n行
d0:删除光标所在行的第一个字符到光标所在位置前一个字符之间的内容
d$:删除光标所在位置到光标所在行的最后一个字符之间的内容
d1G:删除文件第一行到光标所在行之间的内容
dG:删除由光标所在行到文件最后一行之间的内容
u:撤销更改的内容
ctrl+u:撤销在输入模式下输入的内容
4复制粘贴
yw:复制光标所在位置倒单词末尾之间的字符
nyw:复制光标所在位置之后的n个单词
yy:复制光标所在行
nyy:复制由光标所在行开始的n行
p:将复制内容粘贴到光标所在位置
5查找替换
/str:从光标位置开始往文件末尾查找str,n下一个,N上一个
?str:从光标位置开始往文件开头查找str,n下一个,N上一个
:s/p1/p2/g:将光标所在行中所有p1用p2替换
:n1,n2s/p1/p2/g:将n1-n2行中所有p1用p2替换
:g/p1/s/p2/g:将文件中所有p1用p2替换
6末行模式命令
w:保存当前文件
w!:强制保存
w file:将当前编辑内容写到文件file中
q:退出vi
q!:不保存退出vi
e file:打开并编辑文件file,文件不存在则创建
r file:把文件file的内容添加到当前文件
n:移动光标到第n行
!command:执行shell命令command
r!command:将命令command的输出结果添加到当前行
vim学习记录(转)的更多相关文章
- vim 学习记录
VIM中PHP代码使用tab键自动完成 更新于 2013-01-18 05:47:55UEANER 目录结构 $ tree -C ~/.vim | grep -v ".cnx" | ...
- vim 学习记录2
当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串. 全局替换:% s/XXX/YYY/g. 对指定部分进行替换用V进入visual模式,再进行:s/XXX/YYY ...
- 在Ubuntu Server下搭建LAMP环境学习记录
更新于2015/6/16日,因图片地址失效,请在此地址查看:http://note.youdao.com/share/?id=1c249ae6dc6150cbf692adec67b23a33& ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
- vim学习、各类插件配置与安装【转】
转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...
- ansible 学习记录
Ansible 的重新学习记录 这里我的Ansible的宿主机是centos 7.2系统,这里我通过yum 安装Ansible 1.配置epel源 sudo yum -y install epel-r ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...
- SVN教程 -- 基于自己学习记录
SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控 ...
- Git 教程 -- 基于自己学习记录
Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...
随机推荐
- 微信Oauth2.0网页开放授权
网页授权获取用户基本信息 如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称.性别.城市.国家).利用用户信息,可以实现体验优化.用户来 ...
- PAT1029
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际 ...
- 解决Win10 中打开VS2012 出现“ASP.NET 4.0 尚未在 Web 服务器上注册”
系统升级为win10后,在使用vs2012打开原来的项目时,会出现“ASP.NET 4.0 尚未在 Web 服务器上注册”的问题,如图: 想到在win8.1系统下,也出现过同样的问题,就直接使用命令提 ...
- AngularJs 特性 之 模块化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS xmpp Openfire+spark环境搭建
配置这个遇到太多问题了,写下来分享 首先到官网下载openfire+spark 下载地址:http://www.igniterealtime.org/downloads/index.jsp
- POJ 1990:MooFest(树状数组)
题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费. 分析: 我们将奶牛按声 ...
- ICPC World Finals 2018 Problem H Single Cut of Failure
题目链接 题解视频 题解文档 解法概要: 问题可以转化为 考虑一个长为 $2n$ 的数组 $A$,$1$ 到 $n$ 这 $n$ 个整数每个恰在 $A$ 中出现 $2$ 次.判断是否存在一个长为 $n ...
- java运行时间计算
long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime = System. ...
- Python之数据结构:集合
一.set集合 1.集合是一个无序不重复元素集,有去重的作用 set集合类需要的参数必须是迭代器类型的,如:序列.字典等,然后转换成无序不重复的元素集.由于集合是不重复的,所以可以对字符串.列表.元组 ...
- Docker:架构分解
17分钟快速浏览一遍 Docker内部构建 要理解Docker内部构建,需要理解以下三种部件: Docker镜像(Image) Docker容器(Container) Docker仓库(reposit ...