Vim
vim编辑器的介绍这里就不详细说了,对于不是十分了解的人,这里简单说明下vim是有两种模式的,编辑模式和命令模式。
在命令模式下通过命令可以快速的选取、操作文本,也就是其他编辑器的快捷键功能,但vim的命令模式会更加复杂强大一些。
编辑模式就是正常的代码编写,文本录入了。两种模式可以通过快捷键进行切换。
另外vim本身的功能毕竟有限,尚不足以与IDE比较,但是vim本身存在很多第三方插件,可以选择性拓展。根据具体的语言和插件选择,vim完全可以成为一个强大的开发工具。
###常用快捷键
快捷键 | 说明 |
---|---|
h | 向左移动光标 |
l | 向右移动光标 |
j | 向下移动光标 |
k | 向上移动光标 |
w | 光标移动到下一个单词首字母 |
b | 光标移动到上一个单词首字母 |
e | 光标移动到下一个单词最后一个字母 |
shift+5 | 找到’()’,’[]’,’{}‘匹配项位置 |
gg | 光标移动到文件开始 |
G | 光标移动到文件结束 |
12G | 光标移动到第12行 |
12gg | 光标移动到第12行 |
/text | 查找文件中text关键字,按n查询下一个,N查询上一个 |
o | 在光标下一行位置插入段落并进入编辑模式 |
O | 在光标上一行位置插入段落并进入编辑模式 |
i | 在光标当前位置左侧进入编辑模式 |
I | 在光标当前段落开始处位置进入编辑模式 |
a | 在光标当前位置右侧进入编辑模式 |
A | 在光标当前段落结束处位置进入编辑模式 |
x | 删除光标当前位置处字符 |
X | 删除光标当前位置处前一个字符 |
d | 配合数字键和方向键可以选择光标位置处左右多个字符,上下多行 |
D | 删除从光标位置开始到行尾全部字符 |
r | 修改光标当前位置处字符 |
R | 在当前光标位置出进入编辑模式,并逐次修改下面所有字符 |
u | 撤销上一步操作 |
crtl+r | 恢复上一步撤销 |
U | 撤销当前行所有修改 |
v | 选取光标所在位置字符,配合方向键可以选取多个字符或者行 |
V | 选取当前行,配合方向键可以选取多行 |
y | 复制光标所选中字符 |
Y | 复制光标所在位置当前行 |
p | 在光标所在位置后粘贴复制内容 |
P | 在光标所在位置前粘贴复制内容 |
J | 合并光标当前位置行与下一行 |
H | 到屏幕顶端 |
L | 到屏幕底端 |
. | 重复上一次命令 |
ggVG | 全选 |
ddp | 当前行与下一行位置互换 |
daw | 删除光标所在位置出单词,d2w删除光标所在位置及其后工两个单词,标点符号算一个单词 |
esc | 退出编辑模式到命令模式 |
:w | 保存当前修改 |
:w! | 强制保存当前修改 |
:q | 退出vim |
:q! | 强制退出vim |
:wq | 保存修改并退出vim |
###常用设置 以mac系统为例,vim相关文件会以隐藏文件存储在当前登录账户根目录下(Users/username),文件夹名称为.vim。
vim的配置文件也以隐藏文件存储在当前登录账户的根目录下,文件名称为.vimrc。
####文本设置
一般常用设置包括语法高亮、tab占位、设置行号显示、代码颜色、空格显示等。
具体配置代码如下:
"show number line"
set number
"set syntax heightlight for mac"
syntax on
"set markdown heightlight"
autocmd FileType modula2 set fl=
filetype plugin on
"set corret text indent by syntax"
filetype indent on
"set tab key as two space"
set expandtab
set tabstop=2
set shiftwidth=2
" Display extra whitespace as ."
set list listchars=tab:··,trail:·
####代码颜色设置
这里单独说明下代码颜色的设置,一般vim代码颜色文件都存放在。
vim目录下的colors目录中。你可以在google或者github查找下载相关的vim代码配色,然后拷贝到该位置。其中关键词检索录入vim colorscheme即可。
这里我使用的是github的配色,首先将配色文件拷贝到colors目录下。
然后在.vimrc文件中加入如下语句,设置vim启动时采用的配色。
colorscheme github
###常用插件
vim的插件一般分散都存放在.vim目录下,管理起来不是十分方便。
这里为了方便插件的管理采用pathogen。
####pathogen
在.vim目录下创建一个autoload文件夹和一个bundle文件夹。
在autoload文件夹下获取到pathogen的配置文件:
$ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
然后在.vimrc配置文件中添加pathogen的启动方法:
$ execute pathogen#infect()
之后使用pathogen安装插件就简单多了,只需要在bundle中通过git将相关插件clone到本地即可。
####nerdtree
nerdtree会将打开的文件所在的文件夹以树结构展现出来。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/scrooloose/nerdtree.git
修改.vimrc文件:
"nerd tree"
autocmd vimenter * NERDTree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
map <C-n> :NERDTreeToggle<CR>
这样通过vim打开一个文件的时候默认就加载nerdtree插件,当你想隐藏的时候用组合键ctrl+n
即可。
####Tagbar
tagbar可以将你当前打开的文件的结构以索引目录的形式罗列出来。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/majutsushi/tagbar
修改.vimrc文件:
let g:tagbar_width=35
let g:tagbar_autofocus=1
nmap <F8> :TagbarToggle<CR>
autocmd VimEnter * nested :call tagbar#autoopen(1)
这边默认配置是通过F8显示隐藏tagbar窗口,你也可以根据自己需求定义。
####ctrlp ctrlp可以帮助你快速查找打开文件,它默认会在你当前打开文件根目录搜索你键入关键字匹配的文件。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/kien/ctrlp.vim.git
修改.vimrc文件:
"ctrlp, for file search"
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.png,*.jpg,*.jpeg,*.gif
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
####tComment tComment是一款快速注释的插件,它可以根据你当前文件的语言自动决定注释语法。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/vim-scripts/tComment.git
tComment可以不做特殊配置直接使用。
注释和取消注释的快捷键都是ctrl+/+/
,你也可以选择多行然后执行注释命令进行多行注释。
####fugitive fugitive是一个git插件,它允许你在vim的命令模式下通过类似于git的命令执行git命令。
比如可以通过:Gstatus
执行git status
命令,查看文件修改情况。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/tpope/vim-fugitive.git
fugitive可以不做特殊配置直接使用。
####emmet-vim emmet是用来快速输入html代码的插件,emmet-vim是其在vim下的插件。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
git clone https://github.com/mattn/emmet-vim.git
不需要做额外的配置,再次重启vim就可以使用了。
和在其他编辑器中不同,emmet的使用不再用tab出发,而是用组合键ctrl+y+,
。
如果你想自己定义组合键就在.vimrc中加入如下配置:
"emmet"
let g:user_emmet_leader_key='<C-Z>'
这样触发emmet的组合键就变成ctrl+z+,
了,但是,
是必须要的,不能省略。
####vim-surround vim-surround是一个方便快速编辑父子层文本的插件,比如快速删除一个元素的外层元素,给一段文本添加div元素等。
进到.vim/bundle目录下,执行clone命令拷贝项目到本地:
$ git clone https://github.com/tpope/vim-surround.git
重启vim就可以用surround的命令了,这里简单介绍几个个常用的:
命令 | 说明 | 演示 |
---|---|---|
cs”’ | 修改字符""为” | "hello world" 执行命令cs"' 后修改为 'hello world' |
ds” | 删除包裹符号 | "hello world" 执行命令ds" 后修改为 hello world |
cst | 修改父级元素 | <p>hello world</p> 执行命令cst <h1> 后修改为 <h1>hello world</h1> |
dst | 删除父级元素 | <p>hello world</p> 执行命令dst 后修改为 hello world |
VS | 添加父级元素 | hello world 执行命令VS <a> 后修改为 <a>hello world</a> |
####delimitMate、matchit、auto-save
delimitMate会自动帮你完成'
、"
、(
、[
、{
等符号的补全。
matchit可以用%
代替shitf+F5
查找'
、"
、(
、[
、{
等对应符号。
auto-save会在文件修改时自动保存,省去了反复执行:w
命令。