Shift + 3 可以搜索选中的单词的全部(*号也是同样的作用)
u 撤销 ctrl r 取消撤销 vimtutor 进入自带的教程
vim各种使用:这里。
主题配置。
vim插件的使用,github搜索vim-plug
i:光标前面插入; I:行首插入 a:光标后面添加; A:行末添加 a就是代表append
vim修改注释的颜色的方式:地址。
这里是一些vim常用的设置:(.vimrc里面的注释是在前面加一个"
)
vim ~/.vimrc
1.设置行号: set number 或者 set nu # 关闭就是 set nonu
# 将制表符扩展为空格 ,# 这个设置后,编辑python文件,缩进就可以用tab了 set expandtab
- 设置insert模式下Tab缩进格式(设置编辑时制表符占用空格数) set ts=4 (也就是set tabstop=4)
3.设置末行命令模式下»、«的缩进空格数 | 以及换行时的智能空格数 set shiftwidth=4 或者 set sw=4 (设置格式化时制表符占用空格数)
4.设置换行时智能缩进: set smartindent 或者 set si # 关闭就是 set nosi 不建议设置这个,设置了在写shell脚本时有一点点帮助,但是在把python、c++代码复制进去的时候,循环下面的语句每一行都会比上一行加一个tab缩进
5.把tab换成4个空格: set expandtab 禁止转换就是 set noexpandtab
6.设置启用/关闭高亮语法 syntax on / syntax off # 默认是启了的
7.设置启用/关闭搜索结果高亮 set hls / set nohls
8.设置显示标尺(光标所在的行和列) set ruler
9.大小写设置 set ic 忽略大小写 :set noic 取消忽略大小写
10. set hls 匹配项高亮显示
- 取消一写一行注释,回车下一行还是默认带有注释(这对复制c++文件到终端很有用) autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
- 若是想针对c/c++类型文件禁用这个功能(默认是开启的) au FileType c,cpp setlocal comments-=:// comments+=f://
source ~/.vimrc
Tips:
这些都是默认设置了的,写一下吧:
默认打开上次结束的位置(默认开启了的):
" Have Vim jump to the last position when reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
我的常用设置:
set number set ts=4 set expandtab
“列出当前目录文件(复制下面时记得把斜杠去掉)
map <F2> :tabnew .<CR>“取消下一行接着是注释 autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
set mouse=i
知乎发现的一些不要插件的配置 (英文双引号仅左边为vim的注释方式)
“insert模式下,会有一条下划线 autocmd InsertLeave * se nocul “ 用浅色高亮当前行
autocmd InsertEnter * se cul “ 用浅色高亮当前行
- 或者使用始终有一条线:set cursorline
“列出当前目录文件: :tabnew . map <F2> :tabnew .<CR> “ 这就是把上面命令映射到F2上
让insert模式下鼠标可以用: set mouse=i “ 这是绑定到i键,还可以绑定a键,仅这两个可以。
” 允许光标出现在最后一个字符的后面 set virtualedit=block,onemore
按F5进行调试:
"C,C++ 按F5编译运行 map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == 'java' exec "!javac %" exec "!java %<" elseif &filetype == 'sh' :!./% elseif &filetype == 'py' exec "!python %" exec "!python %<" endif endfunc "C,C++的调试 map <F8> :call Rungdb()<CR> func! Rungdb() exec "w" exec "!g++ % -g -o %<" exec "!gdb ./%<" endfunc
.
:重复上次的命令,这还是是对任何vim中命令都适用的,常用于删除,粘贴这一类。凡是要按多次相同命令的,都注意结合这个来使用。
语法:vim 文件名 # 如果文件不存在,就会新建
vim hello.py
# 光标是定位在开头
vim hello.py +
# 光标是定位在末尾
vim hello.py +16
# 光标是定位在16行
Tips: vim编辑中,如果被意外退出,就会有一个.hello.py.swap的交换文件,如果再次编辑就会出异常,这时候关掉输入法,再根据提示输入D,就能正常编辑了,上次的未保存的修改内容也没了。
0
、$
、^
: 快速定位到行首
、行尾
、非空开头
;
gg
:到文档最开头,
G
:到文档最末尾, # 这两个命令输入以前,可以先输入数字,就是跳转到指定行,
:20
:就是跳转到第20行;{
、}
:这两个快捷键可以在以段落快速切换(也就是跳到上一个空行或下一个空行处);%
:可以在当前行的同一对()、[]、{} 左右括号的位置快速切换; 那就shift+5w
:(word)按单词向后移动,
b
:按单词向前移动;ctrl +f
:向下翻页,
ctrl+b
:向上翻页;ctrl+ e
:向下翻动一行
ctrl+ y
:向上翻动一行可视模式的作用:选中指定文本,方便进行后续操作。
大写的V
,选中光标经过的所有行;可视模式:小写的v
,从光标当前位置到后面光标的位置选中这些内容,可搭配跳转到行首、行尾来快速选中一行中的某一段;
ctrl+v
,垂直选中块,一般用在==多行注释或取消多行注释==。具体使用方法:
在要注释段落的首行(不一定得是开头),先ctrl+v,再跳转到要注释段落最后一行,再大写的I(大写的I就是在行首插入),输入#,再按esc;要取消注释就是选中后按下d或者x。Tips:可视模式下可以和前面说的移动命令搭配起来一起使用,以便快速选中指定区域内容(去尝试一下,例如:ggVG能选中所有文本)。
y
,就是复制当前选中的内容;复制当前行:yy
;
5yy
:就是yy这个命令执行5次,那就是向下一共复制5行;yw
就是复制当前这个单词;Tips:很多的时候是先用可视行模式去选中要复制的内容,再y
一下复制。
x
:删除光标所在字符(就删除一两个字符就用这吧,其它的还是用d相关命令来);d
:删除对应的内容,常用如下:
dd
:删除光标所在行;5dd
:向下删除5行;d 移动命令
:就是删除现在光标到移动命令的位置,比如dw
就是从当前位置删到单词末尾,db
就是向前删除一个单词;D
: 大D可以直接删除光标往后的所有内容。 Tips:在vim中,删除命令其实也就是剪切命令,只是没p粘贴而已,发现d删除的内容,可以通过p粘贴回来,d删除的内容也会覆盖掉y复制的内容。
语法:在末行命令下/要查找的内容
,例如/output
,找到的内容就会高亮,
输入N
(Next)下一个,输入n
上一个;
*
向下查找光标所在单词,#
向上查找光标所在单词 (这其实跟上面一样,记住一个就好了)。
Tips:
全局查找所有旧文本,并替换成新文本:
:%s/旧文本/新文本/g
可视区域替换,先选中要替换的范围,然后:
:s/旧文本/新文本/g
# 只是少了百分号
建议使用:==全局下带确认的替换==:
:%s/旧文本/新文本/gc
对,只是多了一个c,这样在替换时就会让我们一个个确定,(后面会有命令提示,y,n,a,q)记住这就行了
注意:使用全局替换时,,要替换的词是某个单词的一部分时,那个单词的那部分也会被替换。所以文本内容多的时候还是慎用,或用带提示的gc。
在末行命令模式下,可以使用
:e 文件绝对路径
来编辑一个新的文件(其实就是不退出vim的一个编译文件切换而已)
可以使用:e .
,就是用vim内置的来查看当前文件夹下的文件内容。
:w new_name.py
:这样可以把当前文件另存为一个叫new_name.py的文件。(ps:这跟win不同,这还是留在原文件的编辑界面,而不是新文件的界面,相当在编辑中途保存当前内容的一个副本。)
在末行命令下分屏:
:sp 文件名
(就是split的缩写),==上下分屏==,也可以输入路径,就会浏览里面的文件,就可以选中后回车;:vsp 文件名
那就是==左右分屏==,一般可在文件名处用.
就是查看当前目录;
ps:如果文件名那里什么都不给,那么就是两个完全相同的自己屏幕直接调换或是编辑的文件的切换: 都先ctrl+w 意思就是控制窗口的意思 然后再输入 w 那么光标就从一个文档切换到另外一个文档了; 若输入的是 r 那么就是把分屏文件左右调换或是上下调换;
ps:若要退出某一个,就在某一个的编辑界面:q
代码缩进:
<<
:提高代码级别>>
:减小代码级别Tips:
.
,即重复上一次命令来使用以减少工作量。标记,快速返回某一行,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 。
mx
,(m就是mark,x这里可以放任意大小写字母,并不是固定写法);'x
;ma
,返回'a
。m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
`{a-z}: 移动到标记位置。
‘{a-z}: 移动到标记行的行首。
`{0-9}:回到上[2-10]次关闭vim时最后离开的位置。
: 移动到上次编辑的位置。''也可以,不过
精确到列,而’‘精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i。
`”: 移动到上次离开的地方。
`.: 移动到最后改动的地方。
:marks 显示所有标记。
:delmarks a b – 删除标记a和b。
:delmarks a-c – 删除标记a、b和c。
:delmarks a c-f – 删除标记a、c、d、e、f。
:delmarks! – 删除当前缓冲区的所有标记。
:help mark-motions 查看更多关于mark的知识。
vim -d file1.py file2.py
这个,用得不多,放这里吧,然后直接页面搜索==录制宏==。
这里。(下面的示例,本地才有,这里就没贴出来了,贴出来,Page的自动构建会因为这的解析失败而失败。)