vim

<<  向左缩进
>>  向左缩进

1、vim命令mode下快捷命令

(插入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开始向下搜索!

2、vim翻页(命令modr插入mode都valid):

pageup (向上翻页,等效于 ctrl+f)
pagedown (向下翻页,等效于 ctrl+b)

3、vim下多行(列)选中复制(or剪切):

  • 命令行模式下,将光标移动到需要选中的行的开始,shift+v即进入vim多行选中模式。选中后,y即复制,d即剪切。< 向左缩进,> 向右缩进, == 自动排版.ctrl+c即退出多行选中mode。
  • ctrl+v进入多块选中模式(可以选择多列哦)。选中后,y即复制,d即剪切。ctrl+c即退出。

4、vim二进制编辑:

命令行mode下,(打开的时候直接 vim -b xxx 据说 vim不会在文件末添加 0x0a)

:%!xxd       (会将当前文本使用xxd命令显示,二进制的,可做相应的修改)
:%!xxd -r   (将xxd风格的二进制显示,转成真实的二进制映像写回到原来的文件)
:wq!           (退出)

5、同时打开多个文件:

vim -o file1 file2 file3 (多视图打开多个文件)
vim -O file1 file2 file3 (只是一个横向一个纵向显示)
在已经打开了某个文件的情况下:
:sp fileother
:vs fileother

直接 vim file1 file2 file3 则只会出现一个视图,:n切换到下一个视图,:N切换到上一个视图

或者直接打开一个文件后,:edit file2 打开另一个文件

6、配置vim(下面的插件管理似乎更好)

//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

7、插件管理:

将开源仓库克隆到 ~/.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 <silent> <leader>ss :source ~/.vimrc<cr>
"快速编辑.vimrc
map <silent> <leader>ee :e ~/.vimrc<cr>
 
"当.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! <cr>
map Q :q! <cr>
"搜索完毕的时候使用 ctrl+h 清除高亮
map <C-h> :nohl <cr>
 
map <F2> :w!<cr>
map <F4> :wq!<cr>
map <F3> :q!<cr>
"imap = insert mode map,this imap means esc to commad mode and :wq!
imap <F2> <Esc>:w!<cr>
imap <F4> <Esc>:wq!<cr>
imap <F3> <Esc>:q!<cr>
 
 
"====================================== 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 <C-e> :Tlist<cr>
imap <C-e> <Esc>:Tlist<cr>
 
" switch between taglist and normal code
" its original is double Ctrl+W ...
map ` <C-w><C-w>
 
"====================================================================
" we find tags file in this path
" refer to .bashrc, alias ct to <generate tags and mv to ~/.vim/tags>
"set tags=tags;
map <C-n> :tn<cr>
map <C-p> :tp<cr>

简化版

"设置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 <C-h> :nohl <cr>

map <F2> :w!<cr>
map <F3> :q!<cr>
"imap = insert mode map,this imap means esc to commad mode and :wq!
imap <F2> <Esc>:w!<cr>
imap <F3> <Esc>:q!<cr>


"多视图打开文件后,切换视图
map ` <C-w><C-w>
"多tab打开另一个文件(浏览方式更直观,打开这个tab页后也是可以 / 搜索文件并打开的)
map <F4> :Te .<cr>
"切换tab
map <S-PageUp> gT <cr>
map <S-PageDown> gt <cr>
imap <S-PageUp> <Esc>gT<cr>
imap <S-PageDown> <Esc>gt<cr>

"多视图打开另一个文件
"map <F4> :vsp 
"直接打开多个文件后,切换到下一个文件和上一个文件
"map <F6> :n<cr>
"map <F5> :N<cr>
"imap <F6> <Esc>:n<cr>
"imap <F5> <Esc>:N<cr>

修正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就可以正常使用了

vim的列编辑操作

删除列

1.光标定位到要操作的地方。

2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。

3.d 删除。

插入列

插入操作的话知识稍有区别。例如我们在每一行前都插入"() ":

1.光标定位到要操作的地方。

2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。

3.SHIFT+i(I) 输入要插入的内容。

4.ESC 按两次,会在每行的选定的区域出现插入的内容。

多文件编辑操作

:Te . 开启多文件,gt切换到其他文件,shift+v 选中目标行后,使用 y 复制,gt切换到指定文件使用 p 粘贴

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值