vim的使用
来源:互联网 发布:电脑无法识别网络 编辑:程序博客网 时间:2024/06/10 11:41
取消撤销
ctrl+r
打开文件
打开多个文件
横向分割: vim -o file1 file2 / :vsplit file
纵向分割: vim - O file1 file2 / :split file
不分割: vim file1 file2 ... filen / :open file --> :split/:vsplit
切换文件
分割的文件之间:ctrl + ww
不分割的文件间::bn/ :bp
关闭文件
关闭光标所在窗口: :q
关闭除光标所在窗口外的其他窗口: :only
操作文件
带操作的打开文件: vi file +10 / vi file +/string
移动光标
Ctrl + B : 向后退一页
Ctrl + F : 向前进一页
GG : 移动到开头
Shift + G: 移动到最后
W / E : 下一个词的开头/结尾
^ / : 第一个非空白位置;
# :移动到光标所在字符串的下一个位置;
查找字符串
/string
替换字符串
:m,ns/old/new/gc : %s/old/new/gc
makefile中避免tab键转换成4个空格
一般写代码的时候,都将tab键转换成4个空格(通过set expandtab命令)
不过,写Makefile的时候,tab有特殊含义——表明这行是规则,不是目标——不能转换成空格
可以先敲ctrl-v组合键,再敲tab键,这样就不会被转换成空格了
自动添加表头信息
在.vimrc中添加如下代码后,在vi打开文件后按 F4 按键就可以在开头添加注释信息;
"进行版权声明的设置
"添加或更新头
map <F4> :call TitleDet()<cr>'s
function AddTitle()
call append(0,"/*=============================================================================")
" call append(1,"#")
call append(1,"# File: ".expand("%:t"))
"call append(3,"#")
call append(2,"# Brief: ")
" call append(5,"#")
call append(3,"# Author: tsc")
"call append(7,"#")
call append(4,"# Modified: ".strftime("%Y-%m-%d %H:%M"))
" call append(9,"#")
" call append(10,"# ")
"call append(5,"#")
call append(5,"=============================================================================*/")
echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle()
normal m'
execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
let n=1
"默认为添加
while n < 10
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile
call AddTitle()
endfunction
添加注释的快捷键
方法一批量添加
ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I(shift+i),再插入注释符,比如"//",再按Esc,就会全部注释了;
批量去掉注释
ctrl+v,进入列编辑模式,横向选中列的个数(如"//"注释符号,需要选中两列),然后按d, 就会删除注释符号;
方法二
使用下面命令在指定的行首操作
添加注释
:起始行号,结束行号s#^#注释符#g
取消注释
:起始行号,结束行号s#^注释符##g
ctags使用
1) 安装:apt-get install exuberant-ctags
2)生成tags文件 : 在目录树的根目录里,使用命令:ctags-R
3)编辑vim配置文件.vimrc
添加两行:
set tags=tags;
set autochdir
注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
当然你如果想直接使用绝对路径,这样也是可以的:
settags=/home/xxx/myproject/tags
3、vim文件时,用用ctrl+]来执行跳转,通过ctrl+t来跳转回来就可以了,很方便的。
ctrl+n : 自动补全变量和函数; : TlistToggle : 列出函数列表;
:ts x,列出符号x的定义
:tj x,可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择。
Ctrl+],跳转到当前光标下符号的定义处,和ta类似。
Ctrl+t,跳转到上一个符号定义处,和上面的配合基本上就能自由跳转了
gd和ctrl+o :用于跳转局部变量;
%: 跳转到相匹配的括号;
函数列表显示的方法
用到的ctags需要自己安装一下,不要用旧的那个ctags,新的叫Exuberant Ctags,apt安装即可: apt-get install exuberant-ctags
然后按照vim.org上的安装说明,下载taglist_42.zip,解压到home目录下的.vim子目录中: http://www.vim.org/scripts/download_script.php?src_id=7701
~/.vim$ unzip taglist_42.zip
进入 $HOME/.vim/doc目录,打开vim,运行“:helptags .”命令,注意后面的点不要丢了,这是为了生成ctags帮助文件的索引,然后才能正常使用帮助。(原来vi帮助中的ctrl+]进入链接、ctrl+T返回也是这么来的)
现在,再启动vim,tags功能就可以用了:
大概用法: 在使用vim的时候,使用: TlistToggle 命令切换函数列表的开、关。 按住ctrl键然后按两下w键在正常编辑区域和tags区域中切换。 在tags区域中,把光标移动到变量、函数名称上,然后敲回车,就会自动在正常编辑区域中定位到指定内容了,很方便的。
常用的几项.vimrc设置:
“禁止自动改变当前Vim窗口的大小 let Tlist_Inc_Winwidth=0
“把方法列表放在屏幕的右侧 let Tlist_Use_Right_Window=1
“让当前不被编辑的文件的方法列表自动折叠起来, 这样可以节约一些屏幕空间 let Tlist_File_Fold_Auto_Close=1
不能正常使用方向键与退格键
因为ubuntu预装的是vim tiny版本,而需要的是vim full版本。
方案一:
$sudo apt-get remove vim-common
$sudo apt-get install vim
有时候不行,执行完第一个指令后,在执行第二个指令时,提示找不到依赖;此时可以更换一下源地址试试。
方案二:
/etc/vim/vimrc.tiny中将set compatible 改为set nocompatible 下一行在添加set backspace=2
在执行上述的时候,因为vi不能正常用,所以要按a键进入编辑模式,在进入某个模式前先按一下esc键。
但此方式的弊端是因为vi版本太低导致程序中的关键字不变色- vim的使用
- vim的使用
- vim的初级使用
- vim的使用
- 高效率的使用VIM
- vim+cscope的使用
- VIM的使用
- vim+cscope的使用
- vim taglist的使用
- Vim中退格键的使用
- vim+cscope的使用
- vim的使用 - 笔记
- vim 的使用
- 高效率的使用VIM
- vim的使用技巧
- vim的使用
- 高效率的使用VIM
- vim的使用技巧
- Xcode7.2搭UI界面时如何进行横竖屏预览
- Linux环境mysql源码安装
- C++&杂谈
- JIRA根据问题状态设置权限
- Git命令文本手册
- vim的使用
- python基础类型
- HDU 1045 Fire Net (dfs 或 二分图)
- Android 使用Fragment 替换 TabActivity
- Windows网络编程之Select模型学习笔记
- ftp和http断点续传及下载的Delphi实现
- 剑指offer系列之五十六:对称二叉树的判断
- ROS_12.18_BaxterAPI_python
- ToolBar的基本使用