Vim
Table of Contents
VIM乃一大神器也。
1 VIM基本使用
该页面主要介绍我经常需要用到的关于vim操作的一些笔记。
1.1 基本移动
- 0 — 到行头
- ^ — 本行第一个非blank字符
- $ — 行尾
- fa — 到下一个为a的字符处
- ta — 到下一个为a的字符前
- F,T — 同上,方向相反
1.2 区域选择
在visual 模式下,这些命令很强大,其命令格式为
<action>a<object> 和 <action>i<object>
action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 ‘、 )、 }、 ]。
假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。
- vi” → 会选择 foo.
- va” → 会选择 “foo”.
- vi) → 会选择 “foo”.
- va) → 会选择(“foo”).
- v2a) → 会选择 (map (+) (“foo”))
1.3 块操作
块操作,典型的操作: 0 <C-v> <C-d> I– [ESC]
- ^ → 到行头
- <C-v> → 开始块操作
- <C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
- I– [ESC] → I是插入,插入“–”,按ESC键来为每一行生效。
- $ A – [ESC] -> 行后加字符串–
1.4 分割窗口
1.4.1 命令
- :split —将一个文件分成上下两个窗口,可用来看一个文件的不同部分
- :close —关闭窗口
- :only -—关闭其他所有窗口
- :split two.c —用另一个文件分割窗口
- :new -— 新窗口编辑新文件
- :nsplit -— 设置窗口高度,n为数值
- :vsplit -—在左边打开新窗口
- :vnew
1.4.2 窗口间跳转
- CTRL-W w —窗口间轮流跳转
- CTRL-w h —跳左
- CTRL-W j —跳下
- CTRL-W k —跳上
- CTRL-W l —跳右
1.4.3 窗口移动
- CTRL-W K —当前窗口移到最上
- #其他三个相似
1.4.4 所有窗口指令
- :wall —保存 所有
- :qall —全部退出
- vim -o one.txt two.txt three.txt —o参数为每个文件打开个窗口
1.5 标签页
1.5.1 命令
- :tabedit one.c —新标签打开一个文件
- gt — 窗口间跳转
- :tab 命令 -— 新标签执行命令
- :tabonly -—你猜~
1.6 复制粘贴
Vim有12个粘贴版,分别是0,1,…,9,a,”,+,用:reg可查看各剪贴板里的内容,其中"粘贴板是最常用的,y和p命令都是操作的这个粘贴版。另一个特殊的粘贴板是+粘贴板,这是系统粘贴板。
使用方法:
- 复制:`"Ny`(N为粘贴板符号)
- 粘贴: `"Np`
2 VIM插件
2.1 vim插件nerdtree
NERDTree是文件浏览器边栏,在处理大项目,有很多文件时,该插件的功能会比较舒服。
2.1.1 常用的快捷键
- o: 打开文件/预览节点
- t:在新标签中打开
- T:在新标签中打开(不自动跳转过去)
- (g)i: (预览)水平分割打开
- s:垂直分割打开
- x:关闭父节点
- X:关闭所有子节点
- e:探索该目录
- D:删除该书签
- P:跳到根节点
- p:跳到父节点
- <C-j>:跳到下一个兄弟节点
- <C-k>:跳到上一个兄弟节点
- C:改变根节点为当前目录
- u:向上移动根节点一层
- R:刷新当前根节点
- I:显示/隐藏隐藏文件
- B:关闭/显示书签
- q:关闭NERDTree窗户
- A:最大化NERDTree窗口
- :Bookmark <name>:添加书签
- :ClearBookmark <name>:删除书签
- :ClearAllBookmarks: 删除所有书签
2.1.2 我的配置
"NERD Tree let NERDChristmasTree=1 let NERDTreeAutoCenter=1 let NERDTreeMouseMode=2 let NERDTreeBookmarksFile='/home/li/.vim/Data/NerdTreeBookmarks.txt' let NERDTreeShowBookmarks=1 let NERDTreeShowFiles=1 let NERDTreeShowHidden=0 let NERDTreeShowLineNumbers=1 let NERDTreeWinPos='left' let NERDTreeWinSize=31 nnoremap f :NERDTreeToggle<cr>
3 vim-config
3.1 我的配置文件
3.2 快捷键设置
- 显示/隐藏NERDTree:f
- Vimwiki:
- 进入wiki index:<Leader>ww
- 新建日记:<Leader>w<Leader>w
- 更新日记目录:<Leader>w<Leader>i
- 标记已完成:<Leader>tt
- 显示日历:<F8>
- 插入日期:<F10>
- 全选:<C-A>