Vim
参考资料
- awesome-vimrc - 一个很好的vim配置
基本功能
三个主要模式:
i:n:v:
更多模式:
rinsert normal: insert mode中按下<c-o>进入insert normalmode,这个模式下使用完命令立马返回imode
重要基本快捷键
哪怕什么都不做,vim的功能也已经非常强大了。vim有一些基本的操作,如下表列出:
| 命令 | 描述 |
|---|---|
gf |
把光标放置在文件地址上,输入gf,打开文件 |
> |
缩进 |
< |
减少缩进 |
S( |
括号包裹文本 |
gg |
跳到第一行 |
G |
跳到最后一行 |
j |
向下移动 |
k |
向上移动 |
h |
向左移动 |
l |
向右移动 |
文件保存
| 命令 | 描述 |
|---|---|
:w |
保存文件 |
:q |
退出文件 |
:e |
打开文件 |
:wq |
保存并退出文件 |
:q! |
强制退出文件 |
:qall |
强制退出所有文件 |
:wqa |
保存并退出所有文件 |
:wqall |
保存并退出所有文件 |
:qall! |
强制退出所有文件 |
:wqa! |
保存并退出所有文件 |
当配置下的特殊快快捷键
|'[ 上一个区块 | |](./-.html) | 下一个区块 | |: | 命令行 | |q:` | 命令行历史 |
中文输入增强
模式切换问题
使用smartim插件。
但这玩意居然是MAC专属的。
ZFVimIM,这个插件在vim中实现了输入法。加入极点输入法以后基本可以满足使求。mac则使用插件完成了自动切换入法。
;;开启或关闭输入法,;:切换词库-和=翻页空格和0~9选词或组词[和]快速从词组选字- 输入过程中会自动组自造词, 也可以用
;,或:IMAdd手动添加自造词,;.或:IMRemove删除自造词
这个issue里面有相关的讨论。问题得到解决。
function! s:check()
let state = ZFVimIME_state()
if len(state['key']) == 4
if !empty(state['list'])
call feedkeys("\<space>", 't')
else
call feedkeys(repeat("\<bs>", len(state['key'])), "nt")
endif
endif
endfunction
autocmd User ZFVimIM_event_OnUpdateOmni call s:check()
使用上述代码就可以解决问题。不过现在的问题就是还是习惯通过shift键进行汉字与英文字母的转换。
中文分词问题
在 vim 里想用 w/b 在中文的词汇之间移动光标,可以安装 coc.nvim 和 coc-ci。
https://github.com/neoclide/coc.nvim https://github.com/fannheyward/coc-ci
实测有用。
代码补全
如果使用vimplus,就可以自动安装YouCompleteMe进行代码补全。
如果使用ultimate vimrc,可以试试安装coc.nvim。
COC
" Use <Tab> and <S-Tab> to navigate the completion list
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
各种设置详解
我使用的插件
- coc.nvim 如前文介绍
- nerdtree 可以列出一个文件树,在写md文档时有用。
NERDTree功能介绍
书签功能:
- :Bookmark [Bookmark name]
- o
- D
文件夹功能:
- 移动:h j k l
- 切换:u
- 打开:C