VIM_Aron
2017-09-07 14:59:49 0 举报
AI智能生成
Vim常用命令
作者其他创作
大纲/内容
常见问题
退格键Backspace失效
SecureCRT
设置一下secureCRT就可以了.
Options-->Session Options-->Terminal-->Emulation-->Mapped Keys-->Other mappings
选中复选框 Backspace sends delet
Delete sends backspac
trust me, it's going to be fine.
Cmder
用bash打开的vim就正常,但不能用cmder的alias
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可以
Gvim只会去usr/bin中读取,因为在环境变量了配置了VIM指向bin
把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-8
syntax on
colo evening
set number
syntax on
colo evening
set number
AS的插件IdeaVim
IDEA Intellij小技巧和插件
IDEA Intellij小技巧和插件
缺点
16. 一些在目前版本已知没有实现的一些常用Vim功能
(如果对Vim不熟悉可以跳过这节)
a)let命令 (没有let命令就无法导出/导入寄存器内容,也就是无法导入宏)
b):g命令 (在文本处理中很有用的一个命令,在编程中倒是不那么常用)
c)!命令 (执行shell命令)
d)大部分正则表达式标记 (例如 \%V, \v 等等)
e) 某些多键命令双击最后一个字符表示作用于当前行。例如在Vim中gUU可以把当前行转换为大写,在IdeaVim中无效,实现同样功能可以先用V命令选中当前行,再用gU转换为大写。
f)关于窗口操作的大部分命令 (Ctrl+w系列命令, :split等)
g)所有Vim脚本插件 (不过大部分可以用Idea自身的功能和插件来补偿)
配置文件.ideavimrc
3.ideavim AS的配置
将Vim加到右键注册表
1. Win+r 输入regedit
2. .删掉注册表中的HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim
3.直接进入注册表,在HKEY_CLASSES_ROOT\*\shell下添加项“Edit With GVim80,设置值为 Edit With GVim80
再在项“Edit With GVim80”下添加子项“command” [右键-新建-项] ,在其右边窗口把其键值设定为
"E:\Program Files\Vim\vim80\gvim.exe" -p --remote-tab-silent "%1"
再在项“Edit With GVim80”下添加子项“command” [右键-新建-项] ,在其右边窗口把其键值设定为
"E:\Program Files\Vim\vim80\gvim.exe" -p --remote-tab-silent "%1"
安装
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.bat
10 Do NOT change startup file E:\Program Files\Vim\_vimrc
14 Install an entry for Vim in the popup menu for the right
mouse button so that you can edit any file with Vim
15 Add Vim to the "Open With..." list in the popup menu for the right
mouse button so that you can edit any file with Vim
16 Add Vim to the Start menu
17 Create a desktop icon for gVim
18 Create a desktop icon for gVim Easy
19 Create a desktop icon for gVim Read-only
20 Do NOT create plugin directories
To change an item, enter its number
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"
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> 在打开光标所在的buffer
d 删除光标所在的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
只支持vim8.0, 因为检测动作是异步完成的,所以基本(绝对)不会卡
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
目前最快的文件搜索器,使用Go语言实现, 几万个文件秒搜
nnoremap <leader>ff :FufFile<CR>
nnorempa <leader>fb :FufBuffer<CR>
Ctrl-n , Ctrl-p上下选择项目
Ctrl-j开启该档案到水平分割视窗
Ctrl-k开启该档案到垂直分割视窗
Ctrl-l开启档案至新分页
Ctrl-\ Ctrl-\ 切换搜寻模式( fuzzy matching 或partial matching )
ag.vim
从ack.vim上clone出来的分支,搜索引擎使用了the_silver_searcher,可以快速批量搜索代码,搜索文件, 模糊匹配, 正则表达式, 什么IDE的批量搜索在它面前都弱爆了
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
自动补全,跳转
Completion <C-Space>
Goto assignments <leader>g (typical goto function)
Goto definitions <leader>d (follow identifier as far as possible, includes imports and statements)
Show Documentation/Pydoc K (shows a popup with assignments)
Renaming <leader>r
Usages <leader>n (shows all the usages of a name)
Open module, e.g. :Pyimport os (opens the os module)
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-e
let g:pymode_run_bind = "<C-S-e>"
" Override view python doc key shortcut to Ctrl-Shift-d
let g:pymode_doc_bind = "<C-S-d>"
Vim几种模式
基础命令
i 插入 进入编辑INSERT状态
:wq或者:x 或 ZZ(按住shift) 保存退出
编辑状态 先按Esc,以下命令都这样
:q 退出
:q! 不保存退出
模式
编辑INSERT模式
i:在当前字符的左边插入
I:在当前行首插入insert
a:在当前字符的右边插入
A:在当前行尾插入append
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
<C-p>或是<C-n>,自动补齐功能
r 和一個字符替換光標所在位置的字符
R 替换模式,替换光标之后的字符<Esc>退出
R 替换模式,替换光标之后的字符<Esc>退出
高级
Ctrl-r a
将寄存器reg中a复制在代码中
一般命令模式
移动光标
使用 h、j、k、l
实现左、下、上、右箭头
当前行 0 ^ $ f F t T , ;
0 → 到行头
^ → 到本行的第一个非blank字符
$ → 到行尾
g_ → 到本行最后一个不是blank字符的位置。
fa → 到下一个为字符a的字符处,
t, → 到字符逗号前的第一个字符。;分号重复 ,逗号反向重复
3fa → 在当前行查找第三个出现的a。
F 和 T → 和 f 和 t 一样,只不过是相反方向。
当前屏
<Ctrl-f>:向下移动一屏。front
<Ctrl-d>:向下移动半屏。
<Ctrl-b>:向上移动一屏。back
<Ctrl-u>:向上移动半屏。
H:移动光标到屏幕上面 Home
M:移动光标到屏幕中间 Middle
L:移动光标到屏幕下面 Last
zt 当前光标所在的行滚动到屏 顶面
zz 当前光标所在的行滚动到屏 中间
zb 屏幕底部
zz 当前光标所在的行滚动到屏 中间
zb 屏幕底部
w到下一个单词的开头word
e到下一个单词的结尾end
b 到该单词开头 begin
b 到该单词开头 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查看标记
'a :到书签a处行首. :marks查看标记
'' 回到上次编辑处, 两个单引号
编辑
motion
d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,
dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。
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 复制两行
r 和一個字符替換光標所在位置的字符
R 替换模式,替换光标之后的字符<Esc>退出
R 替换模式,替换光标之后的字符<Esc>退出
高级
要改变括号内的文本,需要执行 ci( (读做 change inner parentheses)
ci<
效果:删除<>的内容
删除整个段落的内容,需要执行 dap (读做:delete around paragraph)。
交换字符 xp
上下行交换 ddp
u:撤销最后一次命令 undo
U: 来修正整行,撤消在一行中所做的改动
CTRL-R: 撤消以前的撤消命令,redo
高级操作
宏录制
按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
从当前行开始的5行,每行添加一个制表符
: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的首字母縮寫詞
字符编码
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp936
:set fileencoding=gb2312
:set termencoding=utf-8
:! 输入一个外部命令
如:!dir 列出目录下文件和文件夹
:!rm FILENAME - 用于刪除名為 FILENAME 的文件
要將對文件的改動保存到文件中,請輸入 :w FILENAME
要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME
/ ?
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 。
?text:和上面类似,但是是反方向。
简单命令
:marks查看标记
:map 查看键盘映射
:files 查看打开的文件
常用命令
: split two.c // 多文件编辑
:e 文件名 打开文件。
新建文件
:new 文件名.后缀名
:new 文件名.后缀 新建文件。
:tabnew 文件名
新建一个tab标签并新建文件
替换
在一行內替換頭一個字符串 old 為新的字符串 new,請輸入 :s/old/new
在一行內替換所有的字符串 old 為新的字符串 new,請輸入 :s/old/new/g
在兩行內替換所有的字符串 old 為新的字符串 new,請輸入 :#,#s/old/new/g
在文件內替換所有的字符串 old 為新的字符串 new,請輸入 :%s/old/new/g
進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc
:s/old/new/gn
s当前行g全部n不执行,通常用来查看个数
可视化模式 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~字符反转
g~字符反转
一般模式
guu 会整行变小写
gUU 整行大写
g~~行翻转(当然指大小写啦)?
gu方向键
gul 下一个字符变小写
gu5h 向前5个字符变小写
g~j 当前行和下一行大小写反转
ASVim
可视化模式/选中字符
g~~ 选中的反转
guu 选中的变小写
gUU 选中的变大写
一般模式
gU方向键
gUk 当前行和上一行变大写
gu3j 当前行和下三行变小写
几个vim工具对比
gVim
功能多,强大
优点
多行编辑几千行也很快
缺点
AS的ideaVim
缺点
多行编辑5千行卡的一批
Sublime中的vim
Ctrl+V默认是粘贴,默认的多行编辑只能逐个选行
Vim of Atom
cmder,zsh里面的vim
颜色,光标不好配置
0 条评论
下一页