VIM_Aron
2017-09-07 14:59:49 0 举报
AI智能生成
Vim常用命令
作者其他创作
大纲/内容
VIM_Aron
常见问题
退格键Backspace失效
SecureCRT
Cmder
Shift+Backspace代替
F5运行
.vimrc
map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec \"w\"if &filetype == 'c' exec \"!g++ % -o %<\" exec \"!time ./%<\"elseif &filetype == 'cpp' exec \"!g++ % -o %<\" exec \"!time ./%<\"elseif &filetype == 'java' exec \"!javac %\" exec \"!time java %<\"elseif &filetype == 'sh' :!time bash %elseif &filetype == 'python' exec \"!time python2.7 %\"elseif &filetype == 'html' exec \"!firefox % &\"elseif &filetype == 'go' \" exec \"!go build %<\" exec \"!time go run %\"elseif &filetype == 'mkd' exec \"!~/.vim/markdown.pl % > %.html &\" exec \"!firefox %.html &\"endif endfunc
子主题
+python/dyn、+python3/dyn
但是:echo has('python')却为0
不能同时支持python和python3
读取插件目录
Gvim读取不到usr/share/vim/vim80/syntax cmder中vim可以
把syntax拷贝到usr/bin/中即可
语法 颜色正常
右键打开Gvim.exe
echo %HOME%
读不到E15: Invalid expression: %HOME%E15: Invalid expression: %HOME%
Cmder也读不到
echo $HOME
/c/Users/liuwenrong.CCDOMAIN
cmder
C:\\Users\\liuwenrong.CCDOMAIN
GVim.exe
ycmd server shut down
不能自动提示
Python
Python文件时tab报错g:pydiction_location
let g:pydiction_location = '~/.vim/bundle/pydiction/complete-dict
加上这句就可以了
中文乱码
一次生效
:进入命令行输入
set encoding=utf-8
配置文件输入
设置到/usr/share/vim/vim81/defaults.vim
配置
_vimrc & .vimrc
1 .........................................
2.vimrc 复制Insert cmder的vim无效
170803_.vimrc加入鼠标复制Ctrl+y复制
170816_.vimrc 强大配置-插件
190808简单配置
set encoding=utf-8syntax oncolo eveningset number
AS的插件IdeaVimIDEA Intellij小技巧和插件
缺点
配置文件.ideavimrc
3.ideavim AS的配置
将Vim加到右键注册表
1. Win+r 输入regedit
2. .删掉注册表中的HKEY_CLASSES_ROOT\\*\\shellex\\ContextMenuHandlers\\gvim
安装
Install will do for you: 1 Install .bat files to use Vim at the command line: 4 Overwrite C:\\Windows\\evim.bat 5 Overwrite C:\\Windows\\view.bat 6 Overwrite C:\\Windows\\gview.bat 7 Overwrite C:\\Windows\\vimdiff.bat 8 Overwrite C:\\Windows\\gvimdiff.bat10 Do NOT change startup file E:\\Program Files\\Vim\\_vimrc14 Install an entry for Vim in the popup menu for the right mouse button so that you can edit any file with Vim15 Add Vim to the \"Open With...\
vim.exe路径配置在cmder中
E:\\Program Files\\Git\\usr\\bin
终极配置
spf13
https://github.com/spf13/spf13-vim
查看版本和配置的位置
:version
system vimrc file: \"$VIM/vimrc\" user vimrc file: \"$HOME/.vimrc\" 2nd user vimrc file: \"~/.vim/vimrc\" user exrc file: \"$HOME/.exrc\" defaults file: \"$VIMRUNTIME/defaults.vim\" fall-back for $VIM: \"/home/users/liuwenrong/share/vim\"
运行路径
$VIMRUNTIME: \"/usr/share/vim/vim81\"
其中git amend命令打开的vim在git安装目录
插件
文件Buffer管理
NerdTree
let NERDTreeIgnore=['\\.pyc']
map <F3> :NERDTreeToggle<CR>imap <F3> <ESC> :NERDTreeToggle<CR>\"打开树状文件目录
快捷键
I: hidden files (on)
是否隐藏文件
vim-nerdtree-tabs
tab可以共享一个NerdTree
nerdtree-git-plugin
MiniBufExplorer
先Ctrl+k移到buff窗口
<Tab> 向前循环切换到每个buffer名上<S-Tab> 向后循环切换到每个buffer名上<Enter> 在打开光标所在的bufferd 删除光标所在的buffer
命令行模式
:bn 打开当前buffer的下一个buffer:bp 打开当前buffer的前一个buffer:b\"num\" 打开指定的buffer,\"num\"指的是buffer开始的那个数字,比如上图,我想打开list_audit.erb,输入:b7就ok了
代码补全
代码自动补全工具Pydiction 在官网上下载Pydiction,将python_pydiction.vim、complete_dict和pydiction.py三个文件放到D:\\Program Files\\Vim\\vim73\\ftplugin。使用时Tab键就可以进行自动补全。
YouCompleteMe
Window
自动补全括号
Auto-Pairs
Bundle 'vim-scripts/Auto-Pairs'
语法高亮和检查
语法高亮插件python.vim
syntastic语法检查插件和ListToggle
python高级语法检查功能
pylint (高级python语法检查支持)
Asynchronous Lint Engine --- ale
pyflakes提供实时检查python代码语法的功能(强烈推荐!)
文件内跳转
Easymotion
- jump anywhere 任意跳转 类似AS的Ctrl+;
<leader><leader>b
往前找单词
<leader><leader>w
<leader><leader>e
代码跳转
Ctags + Taglist
ptags.py:用 python 编写,为 Python 而设计,它位于你的 Python 源代码目录 Tools/scripts/ptags.py。
把该文件拷贝到项目目录下,执行下面命令: ptags.py *py
python-mode
Ctrl-]
gf 跳转
跳转路径
搜索插件
CtrlP - fast file finder
杀手级的VIM查找文件插件
fzf Fuzzy Finder
nnoremap <leader>ff :FufFile<CR> nnorempa <leader>fb :FufBuffer<CR>
ag.vim
NERDCommenter
快速注释
运行 <leader>cc 注释, <leader>cu 反注释,也可以都调用 <leader>c<SPACE> ,它会根据是否有注释而选择来注释还是取消注释。
Gundo
历史记录 版本控制
通常会将这句加入 _vimrc : nnoremap <Leader>u :GundoToggle<CR>
F4
美观插件
状态栏
vim-airline
airline 已经实现了统一 ,同时支持各种插件,当然带来的负担就是会导致vim启动慢了一点. 当然如果要用vim装逼的话,这个是必不可少的.
powerline
Python相关
jedi-vim
https://github.com/davidhalter/jedi-vim
Python-mode
vim python IDE
K -> 跳到Python doc处 <leader>r -> 运行当前代码 <leader>b -> 增加/删除断点
Go to definition (<C-c>g for :RopeGotoDefinition)
\" Override go-to.definition key shortcut to Ctrl-]let g:pymode_rope_goto_definition_bind = \"<C-]>\"
\" Override run current python file key shortcut to Ctrl-Shift-elet g:pymode_run_bind = \"<C-S-e>\"\" Override view python doc key shortcut to Ctrl-Shift-dlet g:pymode_doc_bind = \"<C-S-d>\"
Vim几种模式
基础命令
i 插入 进入编辑INSERT状态
:wq或者:x 或 ZZ(按住shift) 保存退出
:q 退出
:q! 不保存退出
模式
编辑INSERT模式
i:在当前字符的左边插入I:在当前行首插入inserta:在当前字符的右边插入A:在当前行尾插入appendo:在当前行下面插入一个新行O:在当前行上面插入一个新行
<C-p>或是<C-n>,自动补齐功能
高级
Ctrl-r a
将寄存器reg中a复制在代码中
一般命令模式
移动光标
使用 h、j、k、l
实现左、下、上、右箭头
当前屏
<Ctrl-f>:向下移动一屏。front<Ctrl-d>:向下移动半屏。<Ctrl-b>:向上移动一屏。back<Ctrl-u>:向上移动半屏。
H:移动光标到屏幕上面 HomeM:移动光标到屏幕中间 MiddleL:移动光标到屏幕下面 Last
zt 当前光标所在的行滚动到屏 顶面zz 当前光标所在的行滚动到屏 中间zb 屏幕底部
w到下一个单词的开头worde到下一个单词的结尾endb 到该单词开头 begin
当前文档
G:到文件尾numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)gg:到文件首 gd:跳到光标所在单词变量定义处
*:读取光标处的字符串,并且移动光标到它再次出现的地方。#:和上面的类似,但是是往反方向寻找。%:在成对的括号等符号间移动,比如成对的 [ ] , { }, ( ) 之间。将光标放到任意符号上,然后通过 % 来移动到和这个符号匹配的符号上,% 还可以正确的识别括号的嵌套层数,总是移动到真正匹配的位置上。因此这个命令在编辑程序代码的时候非常有用,可以让你方便的在一段代码的头尾间移动。
/ ?
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 。
?text:和上面类似,但是是反方向。
gd 跳转当前光标所在变量方法的定义处
<Ctrl-e> 向下滚屏
切换窗口
Ctrl+w+j 改成 Ctrl+j 切换到下一个窗口文档
m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。`a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。'a :到书签a处行首. :marks查看标记
编辑
motion
d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。y{motion}:和上面类似,不过是拷贝。yank拔c{motion}:和 d{motion} 类似,不过最后进入插入模式。dd:剪切当前行。yy:拷贝当前行。cc:剪切当前行并且进入插入模式。D:剪切从光标位置到行尾到剪贴板。等同于d$y$ 复制当前光标到结尾 Y:拷贝当前行。C:和 D 类似,最后进入插入模式。等同于c$x:剪切当前字符到剪贴板。 5x 删除5个字符s:和x类似,不过最后进入插入模式。
数字
3j 将会把光标向下移动三行。10dd 将会删除十行。y3t″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。
<start position><command><end position>例如 0y$ 命令意味着:0 → 先到行头y → 从这里开始拷贝$ → 拷贝到本行最后一个字符
p: 粘贴 paste put
. 重复上一个命令
\"ayy 将本行复制到a寄存器reg
\"ap 将a缓冲区的内容粘贴
:req 查看寄存器
可视化/选中
\"+y 复制本行到系统剪切板
\"+yy 复制本行到系统剪切板
\"+2yy 复制两行
要改变括号内的文本,需要执行 ci( (读做 change inner parentheses)
ci<
效果:删除<>的内容
删除整个段落的内容,需要执行 dap (读做:delete around paragraph)。
交换字符 xp
上下行交换 ddp
高级操作
宏录制
按qa(q表示开始录制宏,宏的名字为a) 再shift+>>(表示按住shift,连按两下>,再放开shift。此时第一行应当向后tab了一下) 再j^(此时下移一行,并置光标于行首) 再shift+>> 再shift+>>(即第二行向后tab两下) 再j^(下移一行,并将光标置于行首,为后续操作做准备) 再q(表示宏录制结束,VIM会提示记录完成) 这样宏录完了,可以用了。 再@a,看到了效果了吧?宏执行了一次,即3、4行成功了。还剩下6段,但是你不用按6次@a,而是只要按下6@a就行了!!!
qA可以追加命令到a寄存器
:reg
可以查看寄存器的内容
查看a寄存器
:reg a
:echo @a
修改寄存器a
:let @a=\"修改后的命令\"
第二种方案
G
到文件底部
:put a
将寄存器a的内容复制到文件末尾
做相应的修改
替换寄存器a的内容:两种方案
\"add
将当前行的内容存放在a寄存器
会多一个换行符
0\"ay$
之后在dd删除末尾行即可
一些通用的宏
行首加个tab制表符
>>j^
例:将其放置寄存器b中
@b
即可将当前行添加一个制表符
5@b
:ab sys SystemUI
当你输入sys 回车或空格 sys变成了SystemUI
文件切换 Ctrl+Shift+6 或 :e#
命令行模式 即按: / ?
配置 :set all 查看所有的配置
设置缩进
:set smartindent // 设置缩进 :set smartindent shiftwidth=4 // C语言自动缩进,缩进值为4个字符宽度
:set ruler // 显示光标信息(右下角)
:set number //显示行号(左边)
:syntax on //关键字高亮
显示换行
:set list
:set nolist
:set ic 就是英文忽略大小寫Ignore Case的首字母縮寫詞
字符编码
:! 输入一个外部命令
如:!dir 列出目录下文件和文件夹
:!rm FILENAME\t- 用于刪除名為 FILENAME 的文件
要將對文件的改動保存到文件中,請輸入 :w FILENAME
要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME
简单命令
:marks查看标记
:map 查看键盘映射
:files 查看打开的文件
常用命令
: split two.c // 多文件编辑
:e 文件名 打开文件。
新建文件
:new 文件名.后缀名
:new 文件名.后缀 新建文件。
:tabnew 文件名
新建一个tab标签并新建文件
替换
:s/old/new/gn
可视化模式 v:按字符选择。经常使用的模式,所以亲自尝试一下它。V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。<C-V>:按块选择。非常强大,只在很少的编辑器中才有这样的功能
J → 把所有的行连接起来(变成一行)< 或 > → 左右缩进= → 自动给缩进
块操作: <C-v>块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]^ → 到行头<C-v> → 开始块操作<C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。
大小写
Vim
选择模式/可视化
gU (变大写) gu (变小写) g~字符反转
一般模式
guu 会整行变小写
gUU 整行大写
g~~行翻转(当然指大小写啦)?
gu方向键
gul 下一个字符变小写
gu5h 向前5个字符变小写
g~j 当前行和下一行大小写反转
ASVim
可视化模式/选中字符
g~~ 选中的反转
guu 选中的变小写
gUU 选中的变大写
gU方向键
gUk 当前行和上一行变大写
gu3j 当前行和下三行变小写
几个vim工具对比
gVim
优点
多行编辑几千行也很快
AS的ideaVim
多行编辑5千行卡的一批
Sublime中的vim
Vim of Atom
0 条评论
回复 删除
下一页