【盟友分享】vim学习之路-vim基本操作

前言:说到我的学习之路是从arm嵌入式开发开始的,基本上在学校学习都时windows开发开始的,转到ubuntu上嵌入式开发刚开始非常的不习惯。不用鼠标很难受的,大家是不是有同感,不过在我接触学习vim后我的看法彻底被改变了。我就以我的学习经历从一个新手开始,一步一步的为大家带来我的vim学习之路。

如果你不是刚开始学习vim请略过此段。

安装vim:

  刚安装ubuntu系统是没有自带vim的需要安装 sudo apt-get install vim;

我们先从基本的一些操作开始一步一步的去学习这个强大的代码编辑开发工具吧!

文件操作:

:e filename 心打开一个文件

:w 保存文件

:wq 保存并退出文件

:q 退出文件

:!q 强制退出文件

vim中不同保存退出是有区别的

:x 写入文件并退出(仅当文件被修改时才写入,并更新文件和修改时间;否则不会更新文件修改时间)

:wq和ZZ 强制写入并退出(文件没有被修改也强制写入,并更新文件的修改时间)

操作回退和恢复:

u 回退到上一次操作

U 本行改动恢复

ctrl+r 与u操作相反的操作

移动操作:

j 下移一行

k 上移一行

h 左移一列

l 右移一列

0 移动到开头

$ 移动到结尾

w 移动到下一个单词开头

e 移动到下一个单词结尾

fx 移动到本行之后第一个出现x字母的位置

tx 移动到本行之后第一个出现x字母的前一个位置

gg 跳到文件首

G 跳到文件尾

nG 移动到第n行,或者用:n也可

{ 上一段,}下一段 (空行区分)

[ 函数开始,]函数结束(c文件有效)

% 跳到匹配的括号处

滚屏操作:

CTRL-U使文本向下滚动半屏。相当于显示文本的窗口向上滚半屏。光标所处的行数随滚屏而改变。

CTRL-D使文本向上滚动半屏。相当于显示文本的窗口向下滚半屏。光标所处的行数随滚屏而改变。

CTRL-E使文本向上滚动一行。光标所处的行数不变。

CTRL-Y使文本向下滚动一行。光标所处的行数不变。

CTRL-F 向前滚动一整屏。滚动后光标处于第一行。

CTRL-B向后滚动一整屏。滚动后光标处于最后一行。

zz把当前位置处于屏幕的正中央。

zt 把当前位置处于屏幕的顶端。助记:top。

zb 把当前位置处于屏幕的底端。助记:bottom。

文本操作:

d 剪切,双击剪切一行

y 复制,双击复制一行

p 粘贴

x 删除当前光标下字符

r 替换当前光标字符,后面接替换的字符

:s/old/new/g 全局替换old为new

模式切换

插入模式

i 进入插入模式,当前插入光标位置插入

a 进入插入模式,下一个光标位置插入

o 进入插入模式,在当前行下一行插入

O 进入插入模式,在当前行上一行插入

可配置vim成鼠标光标定位模式

可视化模式

:v 进入可视化模式

替换模式

:R 进入替换模式

使用外部命令

:! 在!后添加外部命令

查找

:/ 在/后添加要查找的内容,进入查找时,按n查找下一个,N查找上一个

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏塔奇克马敲代码

在使用Qt5.8完成程序动态语言切换时遇到的问题

2194
来自专栏苍云横渡学习笔记

【day 13】python编程:从入门到实践学习笔记-基于Django框架的Web开发-Django入门(四)

学习笔记目录 【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型 【day 2】python编程:从入门到实践学习笔记-列表以及其操...

3536

在Atom中设置Python开发环境

当然,网络上有很多很棒的文本编辑器。Sublime Text,Bracket,Atom等。就我个人而言,我一直都是Atom的粉丝,因为它是完全免费的,并且它有...

3548
来自专栏Java后端技术

CSS命名法

  1.驼峰命名法:除第一个单词的首字母小写之外,其余的单词首字母均大写。如:#headBlock(2).

481
来自专栏程序猿DD

Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和...

3314
来自专栏iOSer成长记录

iOS-自定义TextField(解决输入限制,键盘弹出问题)

992
来自专栏软件开发

前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例

使用vue-cli可以规范项目,提高开发效率,但是使用vue-cli时需要一些ECMAScript6的知识,特别是ES6中的模块管理内容,本章先介绍ES6中的基...

796
来自专栏蓝天

GCC 4.7相对4.6.x的改进点

原文:http://www.iteye.com/news/24628 针对C的功能改进: 支持ISO C11标准中的更多特性。除了之前的-std=c1x...

653
来自专栏進无尽的文章

关于-#pragma

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一...

851
来自专栏AndroidTv

移动端造json假数据时的坑(转义符问题)

迭代开发中,经常出现服务端接口还没开发完成的情况,所以经常需要移动端自己在本地造一些假数据。

3205

扫描关注云+社区