vim简单的实用总结
vim简单的实用总结
介绍vim常用的四种模式:一般模式,编辑模式,指令列命令模式与可视模式。
一,一般模式
用vim filename打开文件后直接进入的就是一般模式,在这个模式下可以用hjkl移动光标,这四个字母都是右手控制的,h往左,j往下(食指), k往上(中指),l往右,助记中指高食指低所以按k光标是往高处走,按j光标往下面走。
在一般模式下最常用的是光标定位,比如光标移动到第n行,则按nG,光标移动到最后一行直接按G就行。光标定位到该行末尾按$,光标移动到该行最前面按数字0,如果按数字n再按空格则光标向后移动n个字符的距离,如果数字n再按回车则光标相下移动n行.H将光标移动到该屏幕最上方第一个字符,M移动到该屏中央的第一个字符,L移动到该屏最下方那行的第一个字符.
在一般模式下经常处理行操作,比如从光标所在行开始,nyy表示复制n行,p粘贴在光标之后,大P粘贴在光标之前,ndd删除n行。其实记住y表示复制d表示删除,然后记下面的操作就很简单了,比如y1G表示复制光标所在行到第一行的所有数据,yG复制光标所在行到最后一行的所有数据,这样大家就知道ynG是指复制到哪一行的意思了,由于w代表单词或汉字所以ynw就代表从光标所在处开始复制n个单词或复制n个汉字。yn回车直的就是复制下面的n行,yn空格指的就是复制接下来的n个字符。当然还可以复制到该行开始y0,复制到该行结尾y$.删除也是同样的只是将y换成d而已,
在一般模式下经常用的一个撤销是u重做是ctrl加r,如果要把光标所在行的下一行追加成一行,则按j就可以。
二,插入模式
就是进入可以编辑的模式,常用的有4个按键可以进入。i,a,o,r大小写都可以,但是进入的位置不同,i是插入到光标所在处之前,a是插入到光标所在处之后,I是插入到这一行的最前面,A是插入到这一行的最后面,(其实a指的是after所以它每次都是在后面插入),o是插入到光标行的下一行,O是插入到光标行的上一行。r是替换光标处的字符(只能替换一个字符),R会一直取代光标所在的文字,直到按下esc为止。esc是从插入模式回到一般默式的键.插入模式就完了。
三,可视模式
一般的复制粘贴用可视模式是最直观的也是比刚刚一般模式下复制粘贴更能满足用户感官的。主要有三种复制和删除方式,第一种光标选中多少就可以复制多少,(按字符复制)。第二种总是复制成长方形区域,(也就是按列复制)。第三种是按行复制.
1,按字符选择
按下v之后,光标所到之处都会变成白颜色,停止光标移动之后就代表选择完了(光标可以由h,j,k,l控制),然后按y就表示把刚刚选中的白色区域复制下来了,然后到你想粘贴的地方按p或者P就可以粘贴了。如果选择完后不是按y而是按d则会把刚刚选中的白色区域删除。
2,按列选择
ctrl+v之后再选择的话就是按照长方形的块选择了,语言不好表述试试一下就明白了,选择完成之后按y或者按d由你决定了。
3,按行选择
按V之后就是按行选择,光标所到行都会选中,相当于nyy的作用。
四,指令列模式
这个模式下功能最多了基本可以分为:/?这三种命令
1,"/"和"?"表示的是搜索功能
/后面跟要查找的字符串然后按回车键,表示从光标处向后搜索该字符串,如果要继续向后查找下一个就按n表示next,N表示向上搜索下一个;?后面跟要查找的东西,然后回车表示向光标之前查找该字符串,不过此时n表示向前查找的下一个,而N表示向后搜寻的下一个,也就是说n是跟/和?的方向是一样的,而N是跟/和?的方向相反。只需要掌握任意一种搜索法即可。
2,":"后面可以跟的命令就太多了。介绍三种第一种替换功能,第二种窗口分割功能,第三种vim设置功能
(1)替换
:n1,n2s/word1/word2/g 这个命令表示在第n1行和n2行之间寻找word1然后替换成word2,最后面的g表示行内所以后查到的全部替换,如果g后面再紧接一个c表示每次替换之前系统都会提示你是否要替换。如果一直替换到文件末尾则n2可以用$表示,例如1,$s/hj/houjiao/g表示从第一行到最后一行将hj替换为houjiao,n2也可以用.替换,表示从n1行到当前位置进行查找。
(2)窗口分割
首先vim可以一次打开多个文件进行编辑,而不是用多次vi打开,因为多个vi打开的文档之间不能直接nyy和p所以,用vim file1 file2 ..就可以一次打开多个文件,在一般模式下输入 :n 表示切换到下一个档案 :N 表示切换到上一个档案进行编辑,用:files 显示这次vi打开的所有文件信息。下面引出多窗口分割,即在打开文件之后再打开多个文件并且显示在同一屏幕中,按不同窗口分割开来,具体的做法是在一般模式下输入:sp [filename] 中括号表示该项可有可无,如果后面不加文件名,表示再新窗口中再打开一个与正在编辑的文件一样的文件,如果加文件名表示在新窗口打开一个新文件。如果想在不同窗口间切换,则按ctrl + w + j切换到下面的窗口或者 ctrl + w +k切换到上面的窗口。这个功能真是强大。跟total command 那个软件都差不多了。
(3)vim设置
进入vim后如果嫌文档显示界面不友好则可以设置很多东西,比如加行号:set nu可以让你光标定位更直观,加列号:set ruler可以在右下角看到你光标此时在哪一列,又比如:set bg=dark 可以使注释行颜色鲜艳,:set backspace=2可以让你在进入插入模式后能用回格键删东西(设为0和1时不能),又比如:set hlsearch 可以使搜寻时的字符串高亮显示。所有的这些都是可以在/etc/vimrc文件里面改的,但是这个文件里面的是不全的,你要是想看能设置哪些东西在一般模式下:set all 就可以看到关于vim设置的巨多功能。
(4)再补充一下文件的保存。 ZZ两个大写的Z表示存储后离开与:wq是一样的功能,:w是保存但是不退出,:q是离开vi 这些命令后面如果多加一个!表示强制执行,:w filename 表示将文件另存为。:n1,n2 w filename 表示将n1行到n2的内容保存到filename里面,再补充一点,如果正在vi里面想执行shell命令是不需要:q退出vi后再输入命令的,而是用:!command 就行,比如:! ls /home 就可以在vi中查看 /home 底下输出的档案信息。
最后补充一点,当远程到服务器然后用vi打开文档时中文可能出现乱码情况这时你:set fileencoding 如果不是utf-8(因为一般设置的encoding都是utf-8的,可以用:set encoding查看)而是ansi1格式那就说明转码错误,你只需要在一般模式下按:edit ++enc=cp936然后回车基即可。
如果:set fileencoding是utf-8的那很有可能是终端显示的问题,这时你设置:set termeencoding=gbk 即可,这个不是绝对能解决问题的,因为具体与终端显示编码方式,文件内部编码方式和文件转换编码方式和locale编码方式有关,但是以上两种办法是最常见的,可以解决大部分问题。
--jimmy_hou
Github上如何给别人贡献代码
本篇博文仅随前篇博文Github
简明教程(入门篇),当然我的独立博客也是采用Github搭建,我所介绍的Github正是我搭建博客过程中一点一点学习的过程,如有错误,还请指出,同样大神们可以绕过。
博客园上文章链接:Github
简明教程(入门篇)
本篇重点介绍Github
上如何给别人贡献代码,通过这个过程,也可以知道如果一个项目托管到Github上,团队成员之间合作的流程,给别人贡献代码,特别是一些开源组织,是件光荣的事
1、搜索你要贡献的代码仓库,在这里我创建了两个帐号,一个主帐号,里面有一个代码仓库mfjc,一个是将要贡献代码的帐号howard5888,搜索代码仓库如下图:2、按下回车后,即会出现搜索到的库,如下图所示
3、点击上图中的仓库链接,进入mfjc仓库,点击右边的fork,fork的含义就是创建mfjc项目的副本作为你自已的项目
4、fork之后的图如下图所示,从下图可以看出mfjc已经处于自已的github帐号库中,同时也可以发现github还标明了该库的来源,因为只有标明了来源,后面你修改了文件才有提交的路径
5、修改或者增加仓库里的文件,可以选择在线修改,在线修改一般适合修改量较少,这里介绍的是采用Git工具,将代码仓库下载到本地,在本地修改之后再上传上去,相关命令如下:

mkdir tmp #创建tmp目录
cd tmp #切换到tmp目录
git init #创建并初始化git库
#增加远程git仓库
git remote add origin https://github.com/howard5888/mfjc.git
#将远程git库下载到本地
git pull origin master

6、命令执行完后,可以看看从mfjc下载下来的文件,如下图所示
7、假设我们修改了README.md文件,在这个文件里面增加了#test#,接下来要做的就是将修改后的代码库上传上去,命令如下:
1
2
3
4
5
6
|
#会将当前目录tmp下所有文件都增加到本地库中 git add . #提交更改 git commit -am 'commit' #将库上传到github上 git push -u origin master |
8、上传完后,再回到github网站上,可以看到README.md文件内容已更改9、最后就是将修改提交给主帐号的原作者,由它来决定是否合并你的修改,操作如下,点击Pull request后,跳转到下一个页面,在下一个页面上点击New pull Request
10、接下来的界面上显示了修改后的文件与原作者库里的文件有哪些地方不同
11、然后点击Click to create ....即可跳转到最后一个页面,在最后一个页面上写上自已的提交注释,点击Send Request即可12、主帐号里的源作者即可收到你的提交请求,如果觉的可以的话,就会将你的请求同主干合并
13、估计还有很多人不知道如何与原作者的项目保持同步,如何保持与原作者同步,原作者估计肯定是一个勤劳的码神,而且又有重多的贡献者,因此与原作者保持同步是很重要的,而且在同步的过程中,你会看到别人每次提交的更改,这也是Github最大的价值之一,保持与原作者同步首先要做的就是重复第9步,之后会跳到如下页面
14、点击上图中的红色框里,跳转到下一个页面,在下一个页面中,你会看到项目中的每次更新操作,如下图所示:
15、点击绿色方框里的Create...,进入下一个页写,写上title以及comment,点击Send pull,即可跳转到下一个页面,在下一个页面中间处点击Merge request,即可进行同步
下一篇将介绍如何利用Github搭建属于自已的博客
大家可以预览下我的个人博客
本文档最初由markdown编辑生成,预览效果
vim简单的实用总结的更多相关文章
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- vim简单操作命令
vim简单操作命令: 开启编辑:按“i”或者“Insert”键 退出编辑:“Esc”键 退出vim:“:q” 保存vim:“:w” 保存退出vim:“:wq” 不保存退出vim:“:q!” 查看当前系 ...
- 【转载】手把手教你使用Git(简单,实用)
手把手教你使用Git(简单,实用) 标签: git 2016年04月21日 20:51:45 1328人阅读 评论(0) 收藏 举报 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. ...
- Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】
一:讲故事 上一篇介绍的 6 个特性从园子里的反馈来看效果不错,那这一篇就再带来 6 个特性同大家一起欣赏. 二:特性分析 1. 像弱类型语言一样解析 json 大家都知道弱类型的语言有很多,如: n ...
- easyDialog 简单、实用的弹出层组件
easyDialog 简单.实用的弹出层组件 使用背景 在完成导师需求时,导师要求寻找比一个layer弹出层组件体积小得多的.最好能嵌入在进HTML代码中而非src引用的弹出层组件,在这个需求下,我找 ...
- 工作中简单又实用的vim配置
set number syntax enable set tabstop=4 set shiftwidth=4 set noexpandtab set cindent set autoindent s ...
- vim 简单实用
http://www.runoob.com/linux/linux-vim.html 编辑模式 : (同时打开两个文件) vim test.c test1.c -O 同时编辑两个文件 - ...
- vim简单使用教程
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- Linux命令行及Vim简单学习记录
Linux命令行 1.打开命令行 Ctrl+Alt+t 2.目录 显示当前目录的文件列表 ls 跳转至当前目录中的x文件夹 cd x 返回根目录 cd 3.文件 新建文件1.cpp touch ./1 ...
随机推荐
- bigdata_hadoop集群配置_内存分配
haoop集群 做好内存管理跟重要,不然经常会给抛出个 OutMemory ,内存溢出 以horntonworks给出推荐配置为样本,给出一种常见的Hadoop集群上各组件的内存分配方案.配置时 ...
- 读取上传的CSV为DataTable
csv导入文件会把每列的数据用英文逗号分割开来,如果遇到某列中包含英文逗号,则会把该列用英文双引号进行包装. 如果csv文件中某列的数据本身包含英文逗号,应该使用读取字符串的方式进行解析数据,如csv ...
- C#中的Params、ref、out的区别
C# Params params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params ...
- java学习笔记2——Eclipse的安装及汉化图解
Eclipse的安装 有了JDK,你可以编译Java源码,运行Java程序,但是还没有代码编辑器,没有版本管理工具,也不能方便的管理工程文件,不能与团队协作.安装Eclipse,你才能完成这些工作. ...
- [ACM] poj 1064 Cable master (二进制搜索)
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21071 Accepted: 4542 Des ...
- 基于Http替补新闻WebService数据交换
该系统的工作之间的相互作用.随着信息化建设的发展,而业界SOA了解并带来低TOC(总拥有成本)其他优势.越来越多的高层次的信息使用者关注. 这里暂且不提SOA这种架构规划.在系统间集成协议简单的讨论. ...
- javascript常用知识点集
javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...
- perconaXTRADB Cluster在Redhat Linux上的安装
installing-perconaXTRADB Cluster 5.6 For Redhat 6.4 一.server版本号查看 Root# cat /etc/redhat-release Red ...
- 关于springmvc 方法注解拦截器的解决方案,多用于方法的鉴权
最近在用SpringMvc写项目的时候,遇到一个问题,就是方法的鉴权问题,这个问题弄了一天了终于解决了,下面看下解决方法 项目需求:需要鉴权的地方,我只需要打个标签即可,比如只有用户登录才可以进行的操 ...
- C语言学习笔记-顺序表
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "coni ...