1
0
Fork 0
mirror of synced 2024-11-14 05:08:56 -05:00
ultimate-vim/tiande.md
2016-01-16 17:44:56 +08:00

10 KiB
Raw Blame History

基本的 vim 操作就不介绍了,看过一本简明手册: https://github.com/Tiande/Practice/blob/master/resource/VIM_Tutorial.html

WARNING:

全局的 就是指 , (逗号) 了

<c-*> 里 'c' 是指 ctrl , '-' 号无实际意义

地址连接符不用 win 的 \ ,均以 unix 的 / 展示

就是让你按空格!

" Map to / (search) and Ctrl- to ? (backwards search)

绑定 到 / ?

但因为 为切换输入法,所以可能会无效

" Disable highlight when is pressed

开关搜索词高亮

是回车的意思

,

" Smart way to move between windows

快速在窗口间切换

" Switch CWD to the directory of the open buffer

,cd 切换工作目录到当前文件所在目录

" Move a line of text using ALT+[jk] or Comamnd+[jk] on mac

移动当前行(或 visual 选中的多行),与上下的其他行互换

炒鸡好玩!!!!(Mac 用户再见;) )

" Remove the Windows ^M - when the encodings gets messed up

,m 把该死的 dos 文件格式末尾的 ^M 去掉

" Quickly open a buffer for scribble

,q 快速打开一个 buffer

" Quickly open a markdown buffer for scribble

,x 快速打开一个 markdown buffer

" Toggle paste mode on and off

,pp 开关 paste mode

" Fast editing and reloading of vimrc configs

,e 快速打开 ./my_configs.vim

" 如果需要折行 ,e 后,将 set nowrap 注释掉(行头加 ")

目录补全:

输入模式下,按 开启,然后 上下选择

你可以现在就试一下,先输入 . 然后使用快捷键补全成下面的样子:

./README.md

打开地址下的文件:

gf

例: ./README.md

光标移到地址下然后 gf 试试看! 可以使用 ,bd 关闭等下打开的窗口回到这里哦!

emmet (zencoding)

see the tutorial in "./sources_forked/emmet-vim/TUTORIAL" # 你可以用 gf 直接打开链接哦!

默认的触发方式是 , (还有个逗号喔)

当然,还有种更好的方式就是:

:help emmet

MRU

打开最近使用文件列表

open: ,f close: q open file: o open with readonly: v open in new tab: t

可以使用 或者 ? 启用搜索

to display only file names containing "vim" in them, you can use the following command ":MRU vim". # 其实就是关键词搜索 我更喜欢直接在 ,f 里

主题啊!! 超多啊!! 自己也可以去加啊!!

The 3rd theme:

peaksea ir_black mayansmoke solarized pyte gruvbox

These are vim's default theme (大概是这些,可以在 vim 的 colors 里找到):

blue darkblue default delek desert elflord evening koehler morning murphy pablo peachpuff ron shine slate torte zellner

Edit your "my_configs.vim" (可以使用 ,e 直接打开) and modify:

:colorscheme ir_black # or peaksea ...

peepopen

don't now how to run

YankRing:

是一个粘贴强化的功能

  1. paste something first (p), then use to select previous yanks, changes and deletes. # p 之后, 就可以选啦!
  2. to see a history of previous yanks, changes and deletes, use:
:YRShow

snipMate:

就是自动补全

打代码很有用

just or to finish a definition, function, etc...

例: 输入 date OR datetime 后, 按 或 就会补全日期啦!

2015-07-10

2015-07-10 10:56

bufexplorer:

缓冲区浏览器

缓冲区 和 缓存 感觉差不多

This Plugin can be opened with

,o

新标签打开

t

close

q

delete 一个

d

手册:

:help bufexplorer

Close the current buffer (关闭当前编辑的文件)

,bd

Close all the buffers (关闭所有 buffer)

,ba

commentary

使用 gc gcc gcap 快速添加注释 gcc : 只注释/取消注释当前行 gc : 注释/取消注释选定区域 gcap : 注释/取消注释一个区块

NERD Tree:

目录树

  1. nn: NERDTreeToggle # 打开
  2. nf: NERDTreeFind # 在目录树定位到当前文件
  3. nb: NERDTreeFromBookmark # 打开目录树指定的 mark 文件

命令太多,可以自行查看:

,nn 后按 ?

友情提示: 可以快速的在 不同窗口 间切换!

ctrlp:

Fuzzy file, buffer, mru and tag finder.

文件搜索

不要在磁盘根目录打开,遍历文件会卡死 (不要问我为啥知道...) (使用 :pwd 查看当前目录)

这三个打开命令随便哪个都行, 可以多按几次看不同效果,其他看帮助

  1. j # 在 ./my_configs.vim 中被 tab 切换快捷覆盖

for more info read the "./sources_non_forked/ctrlp.vim/readme.md"

Taglist

神器,列出所有函数声明

!!!! 你要自己去安装 ctags 快到官网愉快的下载吧。

open

该快捷键配置在 ./my_configs.vim

,tg

添加当前文件到 taglist (如果你勿用 d 删除了它):

,ta

在taglist窗口中看帮助

vim-multiple-cursors:

超好玩

在 v 模式下

从一个 word 开始选择,设置多焦点

撤消最后一个选项

跳过下一个目标

退出 multiple-cursors 模式

例:

使用 multiple-cursors 将下列 逗号 去掉并合并为一行:

1, 2, 3, 4, 5

结果:

1 2 3 4 5

vi-expand-region:

和 vim 中用 v V 的 visual 模式不同, 直接使用 + - 号来选择区块。 智能度不行,但傻瓜易操作

vim-airline:

就是状态栏的主题

在 ,e 里配置你想要的色彩:

let g:airline_theme="luna"

vim-fugitive:

;(

goyo:

简化页面元素,让你专心码字!

  1. use z to into zoom mode ;)
  2. use <c-+> to zoom in/out ;)

vim-commentary:

;(

syntastic:

语法检查

,,, 开关 使用 ALT-n ALT-p 遍历出问题的行(MAC 下暂时不会映射按键)

使用 :SyntasticInfo 查看所用检查器 (checker)

python 需要先安装 pylint flake8 之类的检查器

To tell syntastic to use pylint, you would use this setting:

let g:syntastic_python_checkers = ['pylint'] # 我已在 my_configs.vim 里配置

e.g. Python has the following checkers, among others: flake8, pyflakes, pylint and a native python checker.

具体使用请看 sources_non_forked/syntastic/README.markdown

  1. ss to set/unset syntax checking.
  2. sn sp to move between wrong words.
  3. sa to add word to dictionary.
  4. s? to select a right word.

surround.vim config

在 选中的区域 加前后缀

" Annotate strings with gettext "http://amix.dk/blog/post/19678"

例:

:v # 先选中一段 S" # 此时即可前后加上 " test ==> "test"

其实和 v 选中后再 $1 ($2 $3...)效果相同

tab 命令

,tn # 新 tab ,to # 只保留当前 tab ,tc # 关闭当前 tab (等同于 ZQ 或 ZZ 命令) ,tm # 移动标签到指定位置 (输入一个下标) ,t, # 补全一个 tab id 然后切过去

" Let ',tl' toggle between this and the last accessed tab

,tl 可在最近两个 tab 间切换!

将 ALT-u ,ALT-i 映射为 左右切换 tab (在 ./my_configs.vim)

vim 默认使用 gt gT 左右切换 tab

" Opens a new tab with the current buffer's path " Super useful when editing files in the same directory

,te 底部命令栏会出现当前文件目录,需要补全,然后在新 tab 打开文件

,nn 感觉更好用啊

保存命令

,w

" :W sudo saves the file

使用 :W 命令,用 sudo 权限保存文件

" Visual mode pressing * or # searches for the current selection " Super useful! From an idea by Michael Naumann

visual 模式选中字段后,使用 * OR # 可直接指定该区域为搜索条件

应当只按一次 * # ,然后用 n N 搜索

因为 * # 默认为搜索当前光标下的词(不是句子)

" Parenthesis/bracket

visual 模式下! 各种快捷 在选中的区域前后 插入标点符号

$1 ==> () $2 ==> [] $3 ==> {} ==> "" $q ==> '' $e ==> ""

和 S" 模式很像,可以自己再配置(,e),格式是:

vnoremap $1 >a)<esc><i(

" Map auto complete of (, ", ', [

插入模式下的补全

$1 ==> () $2 ==> [] $3 ==> {} $4 ==> {

} $q ==> '' $e ==> "" $t ==> <>

python 下折叠函数

F

操作za打开或关闭当前折叠zM关闭所有折叠zR打开所有折叠。

关于折叠的详细用法,可以在这里找到:

http://tiandechi.com/2015/07/08/vim%E6%8A%98%E5%8F%A0/

python 下的 快捷

插入

$r return $i import $p print $f #--- PH ----------------------------------------------FP2xi

搜索

,1 /class ,2 /def ,C ?class ,D ?def

javascript 下的 快捷

$log() alert() $r return $f //--- PH ----------------------------------------------FP2xi

ACK

并不会用...

" 需要机器上有 ACK(>=2.0) http://beyondgrep.com/install/ " When you press gv you Ack after the selected text vnoremap gv :call VisualSelection('gv', '')

" Open Ack and put the cursor in the right position map g :Ack

" When you press r you can search and replace the selected text vnoremap r :call VisualSelection('replace', '')

" 完全不知道这些是什么鬼 " Do :help cope if you are unsure what cope is. It's super useful! " " When you search with Ack, display your results in cope by doing: " cc " " To go to the next search result do: " n " " To go to the previous search results do: " p " map cc :botright cope map co ggVGy:tabnew:set syntax=qfpgg map n :cn map p :cp

可以跳过

因为我已经把 submodule 移除了...

use submodule plugin

直接引用了其他的 repository (submodule 是一个很好的功能,大概算是 库中库)

submodule 的信息储存在 ./.gitmodules

要把项目里 子仓库 部署进自家目录,还要再执行一串代码:

deploy

git submodule init git submodule update --recursive

or use (合并成一句):

git submodule update --init --recursive

add

git submodule add git@github.com:yashiro1899/wheat.git node_modules/wheat

update

git submodule foreach --recursive git pull origin master

delete

git rm --cached node_modules/wheat && rm -rf node_modules/wheat/