1、ci" (由 change operator 和 text-object i" 组成)

这个命令会找到当前光标所在行的下一个 " 括起来的字符串,清除引号裏面的内容,并进入 insert mode 以方便修改
用起来比解释起来简单,你可用 const char* hello = "Hello world."; 类似这样的代码来测试

2、yaB (由 yank operator 和 text-object aB 组成)

这个命令会将当前光标所在的代码块({} 括起来的内容,包括花括号本身)复制到默认 register,
方便在其他地方用 p 贴出来(当然,写代码不鼓励 copy and paste),你可用用任何一个 {} 来测试,然后找另外一个地方 p

3、gUiw (由 make uppercase operator 和 text-object iw 组成)

这个命令会将当前光标所在的 word 全部变成大写
如将 max_size 变成 MAX_SIZE

4、进入 insert mode 编辑(进入 insert mode 别只用 i,要习惯视乎情况,使用 I a A o O s C)

5、对齐 gg=G 快速对齐整个文件

6、tabnew mytab 新建一个标签mytab,:tabn 跳到下一个标签,:tabp 跳到上一个标签,用gt或gT在普通模式下跳转到下一个和上一个标签

7、切割窗口操作:split 水平方向切割一个窗口,:vsplit 竖直方向切割一个窗口,用Ctrl-w+方向键 在各个切割窗口之间切换。

8、宏操作

qa (将命令录制到a这个剪贴板上{vim有好多个剪贴板,比如abcdefg……})
3x (重复三遍删除操作,将foo删掉,其实也可以用f命令来搭配,对复杂的情况更适用)
0 (移动到行首)
j (移动到下一行)
q (停止录制)
3@a (重复三遍刚才录制的命令,3就是将命令重复3遍,@就是运行,a就是刚刚保存的那个剪贴板)

 10、配置.vimrc

"=========================================================================
"Dessription: .vimrc文件,for Linux
"Create: 2015年08月02日 15时13分
"Email:1002643051@qq.com
"Author:Kevin
"========================================================================= "历史记录数
set history=10000 "显示行号
set number "状态列的行数,预设一行,建议设成两行
set cmdheight=3 "保存全局变量,! 以大写字母开头的全局变数,并且不含有小写字母
set viminfo+=! "让汉字以2个宽度显示
set ambiwidth=double "Fill space between windows 在被分割的窗口间显示空白,便于阅读
set fillchars=stl:\ ,stlnc:\ ,vert:\ "显示标尺 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) "在状态列显示目前的模式,命令行显示vim当前模式
set showmode "输入的命令显示出来,看的清楚些
set showcmd "光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3 "状态行显示的内容
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "启动显示状态行(1),总是显示状态行(2)
set laststatus=2 "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible "启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI "代码补全
set completeopt=preview,menu "设置当文件被改动时自动载入
set autoread "自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autowrite "设置魔术匹配控制,可以通过:h magic查看更详细的帮助信息
set magic "在处理未保存或只读文件的时候,弹出确认
set confirm "字符间插入的像素行数目
set linespace=0 "增强模式中的命令行自动完成操作
set wildmenu "可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key "通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0 "不让vim发出讨厌的滴滴声
set noerrorbells "在执行宏命令时,不进行显示重绘;在宏命令执行完成后,一次性重绘,以便提高性能。
set lazyredraw "===================语法======================================================
"打开语法高亮
syntax enable "允许按指定主题进行语法高亮,而非默认高亮主题
syntax on "设置颜色
colorscheme desert
set background=dark
color ron " desert torte "用浅色高亮当前行
autocmd InsertEnter * se cul "设置高亮显示当前行
set cursorline "开启高亮光标列
set cursorcolumn "使回格键(backspace)正常处理indent, eol, start等
set backspace=2 "允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l "===================Tab and indent===============================================
"不要用空格代替制表符
set expandtab "在行和段开始处使用制表符
set smarttab "统一缩进为4
set shiftwidth=4
set tabstop=4
set softtabstop=4 "设置自动缩排
set autoindent "cindent对c语法的缩进更加智能灵活
set cindent "比autoindent稍智能的自动缩进,在这种缩进模式中,每一行都和前一行有相同的缩进量 粘贴时候使用 set paste
set smartindent "==============文件备份和编码===========================================================
"不自动保存备份文件
set nobackup "禁止生成临时文件
set noswapfile "自动切换当前目录为当前文件所在的目录
set autochdir "设定默认解码
set fileencodings=utf-8
set fileformats=unix,dos,mac
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 "====================Text search and replace=====================================
"高亮显示匹配的括号
set showmatch "匹配括号高亮的时间(单位是十分之一秒)
set matchtime=2 "高亮显示查找搜索的值
set hlsearch "在搜索时,输入的词句的逐字符高亮(类似firefox的搜索
set incsearch "搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感
set ignorecase "如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用
set smartcase "搜索时,不循环搜索
set nowrapscan "带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-,.
set helplang=cn
set list listchars=tab:\|\ ,trail:.,extends:>,precedes:< "状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow " 状态行颜色
highlight StatusLineNC guifg=Gray guibg=White " 状态行颜色 "高亮字符,让其不受100列限制
highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
match OverLength '\%101v.*' "与windows共享剪贴板
set clipboard+=unnamed " 自动格式化
set formatoptions=tcrqn "============CTags的设定 =============================================================
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
"按照名称排序
let Tlist_Sort_Type = "name" "在右侧显示窗口
let Tlist_Use_Right_Window = 1 "压缩方式
let Tlist_Compart_Format = 1 "如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_Exist_OnlyWindow = 1 "不要关闭其他文件的tags
let Tlist_File_Fold_Auto_Close = 0 "不要显示折叠树
let Tlist_Enable_Fold_Column = 0 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File = 1
"============Autocommands =============================================================
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o/*<ESC>'>o*/
autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
\ if line("'\"") > 0 && line("'\"") <= line("{1}quot;) |
\ exe "normal g`\"" |
\ endif
endif " has("autocmd") "用空格键来开关折叠
set foldenable
"set foldmethod=manual
set foldmethod=syntax
set foldlevel=100
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> "设置快捷方式 Set mapleader
let mapleader = "," "快捷加载,当输入",ss"时,加载 .vimrc 文件
map <silent> <leader>ss :source ~/.vimrc<cr>
"快速打开编辑 .vimrc配置文件--->",ee"
map <silent> <leader>ee :e ~/.vimrc<cr>
"快速保存文件--->",w"
map <silent> <leader>w :w<cr>
"快速保存并退出文件--->",w"
map <silent> <leader>wq :wq<cr>
map <silent> <F9> :TlistToggle<cr> "使用前导键加w来实现加速文件保存,来代替:w!加回车
nmap w :w!<cr>
nmap z :x<cr> "ctages映射
autocmd! bufwritepost .vimrc source ~/.vimrc " 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt "============自动补全 ============================================================= :inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<cr>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<cr>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<cr>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction "侦测文件类型 载入文件类型插件
filetype plugin indent on "关掉智能补全时的预览窗口
set completeopt=longest,menu

CTags安装

http://ctags.sourceforge.net/
tar zvxf ctags-5.6.tar.gz
cd ctags-5.6
./configure
make
make install
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src

CTags插件下载

cd /usr/local/src
wget http://www.vim.org/scripts/download_script.php?src_id=19574
mv download_script.php\?src_id\=19574 vimtag.zip
unzip vimtag.zip
cp doc plugin ~/.vim/

使用下面的命令生成帮助标签(下面的操作在vim中进行)

:helptags ~/.vim/doc
:help taglist.txt

使用vundle安装插件

https://github.com/chenpingzhao/Vundle.vim.git ~/.vim/bundle/vundle

set rtp+=~/.vim/bundle/vundle/
call vundle#rc() " let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
Bundle 'L9'
Bundle 'FuzzyFinder'
Bundle 'git://git.wincent.com/command-t.git' filetype plugin indent on " required!
"
" Brief help -- 此处后面都是vundle的使用命令
" :BundleList - list configured bundles
" :BundleInstall(!) - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..

配置语法高亮

:BundleInstall

加入的行

set laststatus=2
set t_Co=256
let g:Powerline_symbols='unicode'
set encoding=utf8
colorscheme desert

其他一些常用的命令

sudo !!  //以 root 帐户执行上一条命令
python -m SimpleHTTPServer //利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问
:w !sudo tee % //在 Vim 中无需权限保存编辑的文件
cd - //更改到上一次访问的目录
^foo^bar //将上一条命令中的 foo 替换为 bar,并执行
cp filename{,.bak} //快速备份或复制文件
mtr google.com //traceroute + ping
!whatever:p //搜索命令历史,但不执行
ssh-copy-id user@host //将 ssh keys 复制到 user@host 以启用无密码 SSH 登录
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg //把 Linux 桌面录制为视频

参考

http://easwy.com/blog/archives/advanced-vim-skills-omin-complete/comment-page-1/

http://www.vim.org/scripts/script.php?script_id=273

https://github.com/ma6174/vim

Linux下编辑利器vim,vimrc,viminfo的高级用法的更多相关文章

  1. Linux文件编辑工具——VIM

    Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...

  2. linux下vi与vim区别以及vim的使用-------vim编辑时脚本高光显示语法

    vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对U ...

  3. linux 下vi与vim区别以及vim的使用

    vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对 ...

  4. 7.Linux文件编辑之Vim

    1.VIM基本概述 1.什么是VIM? vi和vim是Linux下的一个文本编辑工具.(可以理解为windows的记事本,或word文档) 2.为什么要使用VIM? 因为Linux系统一切皆为文件,而 ...

  5. linux下编码和vim编码问题解决

    Linux下编码问题 在Linux环境下经常会出现文件乱码的问题,这实际上就是因为文件编码,以Ubuntu为例,默认的字符编码为UTF-8,并且没有默认安装gbk和gb2312,所以需要我们进行安装和 ...

  6. linux下vi或vim操作Found a swap file by the name的原因及解决方法

    在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION    Found a s ...

  7. Linux下使用doxygen+vim生成c语言源程序文档的方法

    1.安装 doxygen 有两种获得 doxygen 的方法.可以下载预编译的可执行文件,也可以从 SVN 存储库下载源代码并自己编译.清单 1 演示的是后一种方法. 清单 1. 安装和构建 doxy ...

  8. Linux下如何退出vim的一些常用命令总结

    1.保存并退出 linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如: vim test.c 之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按E ...

  9. 【转载】Linux下编辑生成.mo文件

    转载自:http://www.hackbase.com/tech/2012-02-27/65972.html 编辑生成.mo文件 我们在弄网站的时候很可能会接触到.mo和.po文件..po文件是GNU ...

随机推荐

  1. JAVA常见算法题(三十五)

    判断一个整数能被几个9整除. public static void main(String[] args) { f(729); f(730); } public static void f(int n ...

  2. Qt5设置应用程序图标

    1.设置应用程序图标 简单三步走,搞定 ①创建一个图标格式的文件,可以网上在线将普通的图形格式转成.ico 格式的图标文件 http://www.faviconico.org/ 这个网站可以在线转换p ...

  3. 最大熵,熵,MLE的解释,还行

    这篇文章: https://blog.csdn.net/jiaoyangwm/article/details/81276921

  4. 关于Java的一些NIO框架的一点想法

    闲着有点无聊想写点东西. 问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我 ...

  5. C#中属性PropertyInfo的使用

    昨天编程遇到一个问题两个类字段都是二十多个,其中有十多个是相同的,需要将一个类的字段赋值给另外一个类,开始的自己想手动的一个个去赋值,后来想来一下C#基础知识,用PropertyInfo就可以解决类似 ...

  6. android_orm框架之greenDAO(一)

    目录: 一.概述 二.下载并解压greenDAO相关资源 三.应用greenDAO框架 1.创建Java工程 2.添加类库支持 3.创建类 四.代码分析 五.使用greenDAO 六.源码下载 一.概 ...

  7. 【转】十个经典的C开源项目代码

    原文: http://blog.51cto.com/chinalx1/2143904 --------------------------------------------------------- ...

  8. Visual Studio环境变量使用实例:使用环境变量来组织project

    前言 在前一篇文章Visual Studio中的环境变量(以Visual Studio 2013为例)中介绍了VS中的环境变量,本文将以实际样例说明怎样合理使用这些环境变量来组织VC++project ...

  9. debug输出rect,size和point的宏

    #define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x,  ...

  10. mybatis的mapper返回map结果集(springboot)

    通过MapKey指定map的key值 @MapKey("id") Map<Long, UserInfo> getUserInfoMap(); @MapKey(" ...