<< 向左缩进
>> 向左缩进
(插入mode——ESC—–>命令mode):
(命令mode—— i —–>插入mode):
/name
从光标开始处向文件尾搜索名为name的字符串(所有完毕后,按n查找下一个,N查找上一个)全词匹配就是查找以其打头和以其结尾的字符串,eg. /\<int\>?name
从光标开始处向文件头搜索名为name的字符串(所有完毕后,按n查找下一个,N查找上一个)(这个不常用)u
取消前一个操作(相当于撤销)[n]yy
拷贝当前开始的n行(省略n则只拷贝当前行)[n]dd
删除当前开始的n行(省略n则只删除当前行)p
粘帖:xx
执行vim命令,xx可以是: wq(保存退出)wq!(强制保存并退出)q(退出不保存)q!(强制退出不保存)
w(只是写入,即保存),w [filename] (另存为)
nohl(清除高亮) set nu(显示行号) set nonu(不显示行号)
g/p1/s//p2/g (将文件中的所有p1用p2替换。等效于 %s/p1/p2/g )
[n1,n2]s/p1/p2/g (n1->n2行中的所有p1用p2替换。缺省则当前行 )
number 表示跳转到某一行
"g"+"d" 高亮选中光标处的单词 ,n开始向下搜索!
pageup (向上翻页,等效于 ctrl+f)
pagedown (向下翻页,等效于 ctrl+b)
命令行mode下,(打开的时候直接 vim -b xxx 据说 vim不会在文件末添加 0x0a)
:%!xxd (会将当前文本使用xxd命令显示,二进制的,可做相应的修改)
:%!xxd -r (将xxd风格的二进制显示,转成真实的二进制映像写回到原来的文件)
:wq! (退出)
vim -o file1 file2 file3 (多视图打开多个文件)
vim -O file1 file2 file3 (只是一个横向一个纵向显示)
在已经打开了某个文件的情况下:
:sp fileother
:vs fileother
直接 vim file1 file2 file3 则只会出现一个视图,:n切换到下一个视图,:N切换到上一个视图
或者直接打开一个文件后,:edit file2 打开另一个文件
//for config vim,3 files = .vimrc + taglist_46.zip + ctags-5.8.tar.gz
cd /root/Desktop/
unzip taglist_46.zip
cp plugin/taglist.vim /usr/share/vim/vim74/plugin/ (有用的只是这个 taglist.vim )
cp /mnt/hgfs/shareLinux/ctags-5.8.tar.gz .
tar vxzf ctags-5.8.tar.gz && cd ctags-5.8
./configure
make
make install
taglist即解析当前文件中的函数和宏等,将解析结果以左侧abstract窗口的形式展示
提供的功能即从左侧的abstract直接跳到对应的函数中。
ctags安装完成后,terminal下运行
#ctag -R . //即以当前目录为起点递归解析,最后在当前目录下生成tags文件,此后vim即可根据此文件进行跳转
//(试了很多方法,但貌似这个tags只有放在当前project顶级目录才好用……)
#vim -t main //vim打开,直接已main函数作为entry(或者普通mode打开也ok,但应该在tags文件所在目录下运行vim)
进入vim后,
命令行mode,:tag funcABC 可跳转到 funcABC 定义处,如果有多处定义,则 :tn 和 :tp 可依次向后/前查找匹配的函数。
命令行mode,ctrl+] 立即跳转到光标停留的函数的定义处。ctrl+t返回。
//这个cscope不好用。。。。不如直接grep了
find $(pwd) -name “.[ch]” >cscope.files
find . -name “.h” -o -name “.c” -o -name “.cpp” > cscope.files
cscope -bkq -i cscope.files
将开源仓库克隆到 ~/.vim/bundle/ 下,取名 Vundle.vim
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Vundle是一个插件管理工具,详细介绍参见github仓库的介绍。 参考
安装一个插件:
按照 Vundle 要求在~/.vimrc中 Vundle的 begin()和end()之间写上插件名字
Plugin ‘tpope/vim-fugitive’
然后随便打开一个vim进入命令行输入mode,
:BundleInstall 即可安装尚未安装的插件(到~/.vim/bundle/ 下)
移除一个插件:
按照 Vundle 要求在~/.vimrc中 Vundle的 begin()和end()之间将某个插件去掉
然后随便打开一个vim
:BundleClean
查看目前已经安装的插件:
随便打开一个vim
:BundleList
"这个文件是我的vim配置,~/.vimrc
"设置mapleader
let mapleader = ","
"重新加载.vimrc
map ss :source ~/.vimrc
"快速编辑.vimrc
map ee :e ~/.vimrc
"当.vimrc文件被编辑的时候自动执行source操作
autocmd! bufwritepost .vimrc source ~/.vimrc
"==================================================================================
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
"在状态行上显示光标所在位置的行号和列号(default)
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)
"command line 高度设为1
set cmdheight=1
"显示行号
set nu
"光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
"制表符为4统一缩进为4
set tabstop=4
set softtabstop=4
set shiftwidth=4
"继承前一行的缩进方式,特别适用于多行注释
set autoindent
"用空格代替制表符
set expandtab
"在搜索的时候忽略大小写
set ignorecase
"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
"搜到之后高亮
set hlsearch
"在处理未保存或只读文件的时候,弹出确认
set confirm
"允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
"即使一行很长也不要auto换行
set nowrap
"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
"颜色风格
colorscheme torte
""""""""""""""""""""""""""""""""""""""""""""""
" 快捷按键映射"
""""""""""""""""""""""""""""""""""""""""""""""
"保存
map S :wq!
map Q :q!
"搜索完毕的时候使用 ctrl+h 清除高亮
map :nohl
map :w!
map :wq!
map :q!
"imap = insert mode map,this imap means esc to commad mode and :wq!
imap :w!
imap :wq!
imap :q!
"====================================== TagList =================================
" 按照名称排序
let Tlist_Sort_Type = "name"
" 默认打开Taglist
let Tlist_Auto_Open=1
" 在左侧显示窗口
let Tlist_Use_Left_Window = 1
" 压缩方式
let Tlist_Compart_Format = 1
" 如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_Exist_OnlyWindow = 1
" 不要显示折叠树
let Tlist_Enable_Fold_Column = 0
" 不要关闭其他文件的tags
let Tlist_File_Fold_Auto_Close = 0
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
" switch on/off taglist
map :Tlist
imap :Tlist
" switch between taglist and normal code
" its original is double Ctrl+W ...
map `
"====================================================================
" we find tags file in this path
" refer to .bashrc, alias ct to
"set tags=tags;
map :tn
map :tp
简化版
"设置mapleader
let mapleader = ","
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
"在状态行上显示光标所在位置的行号和列号(default)
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)
"command line 高度设为1
set cmdheight=1
"显示行号
set nu
"光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
"制表符为4统一缩进为4
set tabstop=4
set softtabstop=4
set shiftwidth=4
"继承前一行的缩进方式,特别适用于多行注释
set autoindent
"用空格代替制表符
set expandtab
"在搜索的时候忽略大小写
set ignorecase
"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
"搜到之后高亮
set hlsearch
"在处理未保存或只读文件的时候,弹出确认
set confirm
"允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
"即使一行很长也不要auto换行
set nowrap
"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
""""""""""""""""""""""""""""""""""""""""""""""
" 快捷按键映射"
""""""""""""""""""""""""""""""""""""""""""""""
"搜索完毕的时候使用 ctrl+h 清除高亮
"C表示ctrl,A表示alt,S表示Shift
map :nohl
map :w!
map :q!
"imap = insert mode map,this imap means esc to commad mode and :wq!
imap :w!
imap :q!
"多视图打开文件后,切换视图
map `
"多tab打开另一个文件(浏览方式更直观,打开这个tab页后也是可以 / 搜索文件并打开的)
map :Te .
"切换tab
map gT
map gt
imap gT
imap gt
"多视图打开另一个文件
"map :vsp
"直接打开多个文件后,切换到下一个文件和上一个文件
"map :n
"map :N
"imap :n
"imap :N
修正vi编辑器:
vi/vim编辑器在linux中是非常常用的文本编辑工具,但不一定好使,比如编辑的时候可能按方向键会出现莫名奇妙的字符,还有按backspace退格键也可能没有任何作用。修正方法,Terminal中输入 sudo vi /etc/vim/vimrc.tiny 使用vi打开vi的配置文件来修正配置,是不是有点诡异?没关系,能行的。然后按Esc键进入vi编辑器的命令模式, 输入 :set nocompatible (注意不要忘记前面的 : 符号,回车, 此时方向键暂时可以正常使用了,然后按Esc键,输入 :set backspace=2 ,此时删除键也能临时工作了。
然后按方向键找到 配置文件的 set compatible 一行,按i键进入编辑模式, 将它改为 set nocompatible
完了在下一行输入 set backspace=2 ,好了,按Esc键,再键入 :x 保存并退出vi, 以后vi就可以正常使用了
删除列
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.d 删除。
插入列
插入操作的话知识稍有区别。例如我们在每一行前都插入"() ":
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.SHIFT+i(I) 输入要插入的内容。
4.ESC 按两次,会在每行的选定的区域出现插入的内容。
:Te . 开启多文件,gt切换到其他文件,shift+v 选中目标行后,使用 y 复制,gt切换到指定文件使用 p 粘贴