vim

17 篇文章 0 订阅

1.Vim的概念和基本操作,比如移动和增删改查如何

1.输入Vim命令进入Vim
	进去之后似乎没法输入东西,起始默认进去是normal模式使用
	:q可以退出Vim

2.开始编辑
	进入编辑模式就可以像其他编辑器一样编辑了
	使用i(insert)进入编辑模式,
	开始输入文字表示(insert),a(append),o(open a line below)
	使用Esc又可以回到normal模式。使用:wq保存退出  
	w : write      q :quit

 - a append   当前位置后面插入 
 - i insert    当前位置插入 
 - o open a line below     在下行插入
 - A append after Line     在行尾插入 
 - I insert before line    在行首插入 
 - O append a line above    在上行插入

3."怪异"的Vim模式
	Vim和其他很多编辑器的区别在于多种模式
	3.1进入Vim默认是normal(普通)模式?为什么不是编辑模式呢
		 1. 进入Vim默认是normal(普通)模式。使用Esc从插入回到普通模式 	
		 2. 普通模式下可以进行各种命令操作和移动
		 3.大部分情况下你是在浏览而不是编辑,所以Vim默认是normal
	3.2使用a(append)insert)等进入编辑模式
	3.3还有:cmd命令模式和v(isual)可视化模式
		Command(命令)模式
		 - Normal模式下输入:之后执行命令,比如保存退出:wq-气呵成 		
		 - 顾名思义,执行Vim命令,比如保存:W,退出:q
		 - 比如分屏 :vs(vertical split) 竖分屏 :sp(split)行分屏
		 - :set nu   显示行号 		
		 - 比如使用 :%  s/foo/bar/g全局替换  将foo替换为bar 
		 - /java  查找java
		 - :% s/java/python/g  将java替换为python 
		 - :syntax on 语法高亮显示
	 3.4Visual(可视)模式
		Visual模式一般用来块状选择文本
		 - Normal模式下使用v进入visual选择 		
		 - 使用V选择行 		
		 - 使用ctrl+v进行方块选择
4.如何快速纠错
 - 代码就像人生,总是经常出错,需要我们快速修正
 - 进入Vim之后首先使用ali/o之一进入插入模式
 - ctrl+h删除上一个字符,
 - ctrl+w删除上一个单词,
 - ctrl+u删除当前行 
 - ctrl+a 开头
 - ctrl+e 结尾
 - ctrl+b 前移
 - ctrl+f 后移
 - 以上几个快捷键可以用在很多地方,比如终端
5.快速切换insert和normal模式很多键盘的键位设置,Esc按起来不方便,
 - 切换到normal使用Ctrl+c代替Esc(但是可能会中断某些插件)或者ctrl+[
 - gi快速跳转到你最后一次编辑的地方并进入插入模式
 - 在配置章节我们会讲解如何映射方便的快捷键来替代Esc
6.让键盘适应工具
 - 键盘的选择会影响你的编辑速度
 - 选择Esc和Ctrl比较容易触碰到的键盘使用Vim你可以使用HHKB或者Poker2这种迷你键盘
 - 使用软件修改键位,比如CapsLock改成频繁使用到的Ctrl
7.反人类的hjkl众所周知,vim normal模式使用了反人类的hjkl来移动
	 - 据说编辑器作者在编写vim的时候键盘还没流行上下左右按键 
	 - 左(h),j(下),k(上),右(1),移动也不会让手指脱离主键盘区
	 - 相信我,逼着自己使用hjkl一段时间之后,你会体会到它非常有效率
8.在单词之间厂飞舞
 - 在单词之间移动是我们浏览操作中最常使用的命令
 - w/W移到下一个word/WORD开头。e/E下一个word/WORD尾
 - b/B回到上一个word/WORD开头,可以理解为backword
 - word指的是以非空白符分割的单词,WORD以空白符分割的单词
9.行间搜索移动
	同一行快速移动的方式其实是搜索一个字符并且移动到该字符
 - 使用fchar}可以移动到char字符上,t移动到char的前一个字符
 - 如果第一次没搜到,可以用分号(:)/逗号()继续搜该行下一个/上一个 
 - 大写的F表示反过来搜前面的字符
10.Vim水平移动
 - 如何快速移动到一行的行首或者行尾呢?
 - 0移到行首第一个字符,^移到第一个非空白字符
 - $移动到行尾,g_移动到行尾非空白字符
 - 记住常用的0和$就可以满足日常需求了
11.Vim垂直移动
 - 我们还可以在句子(sentence)和段落(paragraph)间移动(不常用)
 - 使用括号()在句子间移动,你可以用:help(来查看帮助
 - 使用{}在段落之间移动 插件章节我们会讲如何
 - 用easy-motion插件移动,这些命令就都不用记忆啦
:help (    查看(命令使用方式

12.Vim页面移动
 - gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回
 - H/M/L跳转到屏幕的开头(Head),中间(Middle)和结尾(Lower)
 - Ctrl+u.ctrl+f上下翻页.(upword/forward),zz把屏幕置为中间
13.Vim快速删除
 - 如何快速删除一个字符或者单词呢?
 - Vim在normal模式下使用x快速删除一个字符
 - 使用d(delete)配合文本对象快速删除一个单词daw(d around word)
 - d和x都可以搭配数字来执行多次
14.Vim 快速修改
 - 相比删除,更常用修改,一般是删除之后改成我们期望的文本常用有三个,r(replace),c(change),s(substitute)
 - normal模式下使用r可以替换一个字符。s替换并进入插入模式
 - 使用c配合文本对象,我们可以快速进行修改
15.Vim查询
 - 查询单词也是一个常用操作
 - 使用/或者?进行前向或者反向搜索
 - 使用n/N跳转到下一个或者上一个匹配
 - 使用*或者#进行当前单词的前向和后向匹配
16 
	高亮   :set hls
	增量搜索   :set incsearch
`17.``Vim替换命令
 - substitute命令允许我们查找并且替换掉文本,并且支持正则式
 - [range]s[ubstitute]/pattern)/(string)/[flags]
 -  range表示范围比如:1020表示10-20行,%表示全部oattern是要替换的模式,string是替换后文本
    - 替换标志位
 - Flags有几个常用的标志 
 - g(global)表示全局范围内执行
 - c(confirm)表示确认,可以确认或者拒绝修改
 - n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
18.Buffer Buffer-什么是缓冲区?
 - Vim打开一个文件后会加载文件内容到缓冲区
 - 之后的修改都是针对内存中的缓冲区,并不会直接保存到文件
 - 直到我们执行:w(write)的时候才会把修改内容写入到文件里
19.Buffer切换
 - 那如何在buffer之间切换呢?
 - 使用:1s会列举当前缓冲区,然后使用:bn跳转到第n个缓冲区:
 - bpre:bnext:bfirst:blast
 - 或者用:b buffer-name加上tab补全来跳转
20.Window窗口
 - 窗口是可视化的分割区域 一个缓冲区可以分割成多个窗口,每个窗口也可以打开不同缓冲区
 - <Ctrl+W>s水平分割,<Ctrl+w>v垂直分割。或者 :sp和 :VS
 - 每个窗口可以继续被无限分割(看你屏幕是否够大)
21.如何切换窗口
	切换窗口的命令都是使用Ctrl+w(window)作为前缀
	命令
	В途
	C-w>w
	在窗口间循环切换
	<C-w>h
	切换到左边的窗口
	kC-w>j
	切换到下边的窗口
	<C-w>k
	切换到上边的窗口
	kC-w>l
	切换到右边的窗口
22.Tab(标签页)将窗口分组
Tab是可以容纳一系列窗口的容器(ch tabpage)
 - Vim的Tab和其他编辑器不太一样,可以想象成Linux的虚拟桌面比如
 - 一个Tab全用来编辑Python文件,
 - 一个Tab全是HTML文件相比窗口,
 - Tab一般用的比较少,Tab太多管理起来也比较麻烦
23.Tab(标签页)操作
	Tab使用不多,简单了解一下常用操作就好命令用途
	:tabe[dit]{filename}  在新标签页中打开{filename}
	<C-w>T    把当前窗口移到一个新标签页
	:tabc[lose]     关闭当前标签页及其中的所有窗口
	:tabo[nly]       只保留活动标签页关闭所有其他标签页
	如何切换不同的标签页,一般建立两个就好,太多不好操作Ex命令
	:tabn[ext](N
	:tabn[ext]
	:tabp[revious]
	普通模式命令
	用途
	N}gt gtgт
	切换到编号为N}的标签页
	切换到下一标签页切换到上一标签页	
24.Text Object(文本对象)
 - 如果你学过主流的编程语言,一定知道面向对象编程
 - Vim里文本也有对象的概念,比如一个单词,一段句子,一个段落
 - 很多其他编辑器经常只能操作单个字符来修改文本,比较低效
 - 通过操作文本对象来修改要比只操作单个字符高效	
25.文本对象操作方式
 - 之前我们已经使用过文本对象了,回忆下dw(删除一个单词) [number]<command >[text object]
 - number表示次数,command是命令,d(elete),c(hange),y(yank) 
 - text object是要操作的文本对象,比如单词w,句子s,段落p
26.Vim Normal模式复制粘贴
 - 初学者会感觉Vim复制粘贴比较奇怪,先从normal模式学习normal模式下复制粘贴分别使用y(yank)和p(put),剪贴d和p
 - 我们可以使用v(visual)命令选中所要复制的地方,然后使用p粘贴
 - 配合文本对象:比如使用yiw复制一个单词,yy复制一行Vim里的剪贴(cut)复制(copy)粘贴(paste)分别是delete/yank/put
27.Insert模式下的复制粘贴
 - 很多人会使用鼠标进行选中,然后使用ctrl+v或者cmd+v粘贴这个和其他的文本编辑器差不多,但是粘贴代码有个坑
 - 很多人在vimrc中设置了autoindent,粘贴Python代码缩进错乱
 - 这个时候需要使用:set paste和:set nopaste解决
28.什么是Vim的寄存器?
 - 你有没有好奇?Vim在normal模式下复制/剪贴的内容去了哪?
 - Vim里操作的是寄存器而不是系统剪贴板,这和其他编辑器不同
 - 默认我们使用d删除或者y复制的内容都放到了"无名寄存器" 
 - 用×删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符
29.如何使用宏
 - 宏的使用分为录制和回放,是不是有种拍电影的感觉Vim使用q来录制,同时也是q结束录制
 - 使用q{register)选择要保存的寄存器,把录制的命令保存其中
 - 使用@{register}回放寄存器中保存的一系列命令
 -  - 现在你知道宏怎么用了,如何解决刚才的问题呢?先给一行加上双引号,然后再回放到其他所有行
 - 我们先使用q开始录制,给一行加上双引号,之后使用q退出
 - 在剩下的所有行中回放录制的宏
31.Vim中常见的补全
	Vim中有很多种补全的方式
	命令
	补全类型
	<C-n
	普通关键字
	<C-xx<C-n2 |当前缓冲区关键字
	<C-x<C-i |包含文件关键字
	<C-x><C-1> |标签文件关键字
	<C-x<C-k> |字典查找
	<C-x<C-1>1整行补全
	<C-x><C-f> |文件名补全
	<C-x><C-o> |全能(0mni)补全
32.Vim更换配色
 - 很多现代化的编辑器和IDE都支持更换主题,Vim当然也可以
 - 使用:colorscheme显示当前的主题配色,默认是default
 -:colorscheme <ctrl+d>可以显示所有的配色
 - 有中意的配色后,用:colorscheme配色名就可以修改配色
33.如何编写Vim配置文件
 - 如何编写自己的Vim配置文件呢? 
 - Linux/Unix下新建一个隐藏文件vim ~/.vimrc 
 - windows系统vim$MYVIMRC,通过环境变量编辑配置文件
 - 接着我f就可以开始自定义自己的配置了	





2.配置Vim,编写自己的vimrc文件

" 常用设置
" 设置行号
set number
colorscheme hybrid
" 按F2进入粘贴模式
set pastetoggle=<F2>
" 高亮搜索
set hlsearch
" 设置折叠方式
set foldmethod=indent
" 一些方便的映射
Let mapleader= ','
let g:mapleader=','
" 使用jj进入normal模式
inoremap jj <Esc>`^
"使用leader+w 直接保存
inoremap <leader>w <Esc> :w<cr>
noremap <leader>w :w<Cr>
" 切换buffer
nnoremap <silent> [b :bprevious<CR>
nnoremap <silent> [n :bnext<CR>
" use ctrl+h/j/k/L switch window
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-1> <C-w>l
"Sudo to write
cnoremap w!! w !sudo tee % >/dev/null
" json格式化
com! FormatJSON %!python3 -m json.tool
" 插件设置,这里使用了vim-plug
call plug#begin('~/ . vim/plugged')
"安装插件只需要把github 地址放到这里重启后执行:PlugInstall 就好了
PLug 'mhinz/vim-startify'
PLug 'scrooloose/nerdtree'
call plug#end()

source ~/.vimrc

3.如何安装和使用插件,无限扩充Vim功能

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值