Linux下编辑利器vim,vimrc,viminfo的高级用法

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 (停止录制)
[email protected] (重复三遍刚才录制的命令,3就是将命令重复3遍,@就是运行,a就是刚刚保存的那个剪贴板)

 10、配置.vimrc

"=========================================================================
"Dessription: .vimrc文件,for Linux
"Create: 2015年08月02日 15时13分
"Email:[email protected]
"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

参考

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

时间: 2024-10-04 02:26:37

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

Linux下文本的vim文本替换

Linux命令:vi全局替换方法 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr]: 表示检索范围,省略时表示当前行. 如:"1,20" :表示从第1行到20行: "%" :表示整个文件,同"1,$": ". ,$" :从当前行到文件尾: s :表示替换操作 [option] :表示操作类型 如:g 表示全局替换; c 表示进行确认 p 表示替代结

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

linux下vi或vim编辑文件时提示Found a swap file by the name的原因及解决方法

在linux下用vi或vim打开test.java文件时 [[email protected] test]# vi test.java 出现了如下信息: E325: ATTENTION     Found a swap file by the name ".test.java.swp"             owned by: root   dated: Wed Dec  7 13:52:56 2011         file name: /var/tmp/Test.java  

普通人的编辑利器——Vim

2005年5月,我开始用Vim.此后渐入佳境,原来因版权自律而放弃盗版UltraEdit的遗憾一扫而空.并且,从Vim我才体会到,什么才是真正的编辑利器.在善用佳软或其他论坛发文,我都是先在Vim中输入,并方便高效地编辑好格式,再贴到网上.而我的通讯录.记事.读书笔记.工作记录也是在Vim中完成的.包括一些文档.数据的处理,让Vim过一下,也会提高不少效率.一句话,自用Vim以来,对它迷恋日深,几乎要超过Total Commander.但是,正如善用佳软及论坛发文所提,我大力推荐“用IrfanV

linux下终端,vim显示中文为乱码

这个问题,主要还是一些环境变量设置不对导致. 主要修改的文件包括: 1./var/lib/locales/supported.d/local 2./etc/environment 3.~/.vimrc 首先, sudo  vim /var/lib/locales/supported.d/local    en_HK.UTF-8 UTF-8    en_US.UTF-8 UTF-8    zh_CN.UTF-8 UTF-8    zh_CN.GBK   GBK     #增加    zh_CN.G

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

1.安装 doxygen 有两种获得 doxygen 的方法.可以下载预编译的可执行文件,也可以从 SVN 存储库下载源代码并自己编译.清单 1 演示的是后一种方法. 清单 1. 安装和构建 doxygen 源代码 bash-2.05$svn  co  https://doxygen.svn.sourceforge.net/svnroot/doxygen/trunk doxygen-svn bash-2.05$ cd doxygen-svn bash-2.05$ ./configure bash

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

在linux下用vi或vim打开Test.java文件时 [[email protected] tmp]# vi Test.java 出现了如下信息: E325: ATTENTION     Found a swap file by the name ".Test.java.swp"             owned by: root   dated: Wed Dec  7 13:52:56 2011         file name: /var/tmp/Test.java    

Linux下编辑文件问题2例

1.linux vim 中的<feff><feff>被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16.UTF-32编码里它是必需的,而在UTF-8>里是可选的 linux下删除<feff>: grep -I -r -l $'\xEF\xBB\xBF' file|xargs sed -i 's/\xEF\xBB\xBF//' 2.linux vim 中的^M在Linux下使用vi来查看一些在Wi

linux下find(文件查找)命令的用法总结

前言:我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆文件”的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉,其实想玩linux的你更要牢牢掌握这个命令,因为linux不像windows那样有固定的文件名后缀,并且因为linux阵营下百家争鸣的特性,一个相同的文件在不同的发行版,可能会有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上将会顺利很多,同时