《Linux运维葵花宝典---vi/vim手册》
Posted overarching
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Linux运维葵花宝典---vi/vim手册》相关的知识,希望对你有一定的参考价值。
VI中的多行删除与复制 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd 方法1: 光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。 方法2: 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面。 方法3: 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行,输入mb 光标移到粘贴行,输入mc 然后 :‘a,‘b co ‘c 把 co 改成 m 就成剪切了 要删除多行的话,可以用 :5, 9 de VIM常用命令 常用命令 1) 光标命令 k,j,h,l---上下左右光标移动命令,虽然可以在Linux中使用键盘右边的四个光标键, 但是记住这四个命令还有非常有用的,也就是右手在键盘上放置的位置部分 nG ----n为行数,该命令立即使光标跳到指定行。 Ctrl+G-----光标所在位置的行数和列数报告 w,b------使光标向前或向后跳过一个单词 2) 编辑命令 i,a,r -------在光标的前,后,上方插入字符命令(i=insert,a=append,r=replace) cw,dw------ 改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete) x,d$,dd -----删除一个字符,光标所在处到行尾的所有字符,和整行的命令 3) 查找命令 /string, ?string-----从光标所在处向后/向前查找相应的字符串的命令 4)拷贝复制命令 yy,p -----拷贝一行到剪贴板/取出剪贴板中内容的命令 常见问题及应用技巧 1) 在一个新文件中读/etc/passwd中的内容,取出用户名部分 vi file :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分 :3r /etc/passwd 这是在指定的行号后面读入文件内容 另外一种方法删掉文件中所有的空行及以#开始的注释行 #cat squid.conf.default | grep -v ‘^$‘ | grep -v ‘^#‘ 2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘 vi file :w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1 :20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1 3) 用VI编辑一个文件,但需要删除大段大段的内容 vi file Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G. :23,1045d 假定两次行号为23和1045,则把这几间的内容全删除 也可以在开始和结束两行中用ma,mb命令标记后用:‘a,‘bd删除. 4) 在整个文件或某几行中在行首或行尾加一些字符串 vi file :3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string :%s/$/ some string/g 在整个文件每一行的行尾添加 some string :%s/string1/string2/g 在整个文件中替换string1成string2 :3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2 Note: s为substitute,%表示所有行,g表示global 5) 同时编辑两个文件,在两个文件中拷贝剪贴文本 vi file1 file2 yy 同时打开两个文件,在文件1的光标所在处拷贝所在行 :n 切换到文件2 (n=next) p 在文件2的光标所在处粘贴所拷贝的行 :N 切换回文件1 6) 替换文件中的路径 :%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin 或者用 :%s//usr/bin//bin/g 在‘/‘前用符号指出‘/‘是真的单个字符‘/‘ 7) 用 vi 多行注释 如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,重复上个命令。如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是: :.,+499 s/^/#/g
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
vim中不能正常显示中文的解决方法
vim ~/.vimrc
在.vimrc文件中添加以下内容:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
/etc/vimrc
"===============================================================================
" Filename: vimrc
" Author:myswirl
" Email:myswirl@163.com
" Created: 2009-04-28
"===============================================================================
set fileencodings=ucs-bom,utf-8,cp936 " 打开文件时会根据fileencodings选项来识别文件编码
set fileencoding=utf-8 " 保存新建文件时会根据fileencoding的设置编码来保存
set encoding=utf-8 " Vim的内部使用编码
set termencoding=utf-8 " Vim终端所使用的编码
set guifont=Luxi/ Mono/ 9 " 设置字体,字体名称和字号
set tabstop=4 " 设置tab键的宽度
set backspace=2 " 设置退格键可用
set nu " 显示行号
set nocompatible "去掉vim的兼容性bug
"set vbt_vb= " vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声
"set wrap " 自动换行
"set nowrap " 不自动换行
set linebreak " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
"set list " 显示制表符
"set listchars = tab:>-,trail:- " 将制表符显示为‘>---‘,将行尾空格显示为‘-‘
set listchars=tab:./ ,trail:. " 将制表符显示为‘. ‘
"set autochdir " 自动设置目录为正在编辑的文件所在的目录
set hidden " 没有保存的缓冲区可以自动被隐藏
set scrolloff=5 "
"--------------------------------------------------------------------------------
" 查找/替换相关的设置
"--------------------------------------------------------------------------------
set hlsearch " 高亮显示搜索结果
set incsearch " 查询时非常方便,如要查找book单词,当输入到/b时,会自动找到
" 第一个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的
" 单词,依次类推,进行查找时,使用此设置会快速找到答案,当你
" 找要匹配的单词时,别忘记回车
set gdefault " 替换时所有的行内匹配都被替换,而不是只有第一个
"--------------------------------------------------------------------------------
" 状态栏相关的设置
"--------------------------------------------------------------------------------
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
set laststatus=2 " always show the status line
set ruler " 在编辑过程中,在右下角显示光标位置的状态行
"--------------------------------------------------------------------------------
" 编程相关的设置
"--------------------------------------------------------------------------------
"set completeopt=longest,menu " 关掉智能补全时的预览窗口
filetype plugin indent on " 加了这句才可以用智能补全
:set tags=/home/mingyang/ipmsg/tags
syn on " 打开语法高亮
set showmatch " 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set smartindent " 智能对齐方式
set shiftwidth=4 " 换行时行间交错使用4个空格
set autoindent " 自动对齐
set ai! " 设置自动缩进
colorscheme desert " 配色方案/usr/share/vim/vim63/colors
"--------------------------------------------------------------------------------
" 代码折叠
"--------------------------------------------------------------------------------
"set foldmarker=,
set foldmethod=syntax " maker syntax
set foldlevel=100 " Don‘t autofold anything (but I can still fold manually)
"set foldopen-=search " don‘t open folds when you search into them
"set foldopen-=undo " don‘t open folds when you undo stuff
"set foldcolumn=4 "
"--------------------------------------------------------------------------------
" 模仿MS Windows中的快捷键
"--------------------------------------------------------------------------------
vmap <C-c> "yy
vmap <C-x> "yd
nmap <C-v> "yp
vmap <C-v> "yp
nmap <C-a> ggvG$ "
"--------------------------------------------------------------------------------
" 窗口操作的快捷键
"--------------------------------------------------------------------------------
nmap wv <C-w>v " 垂直分割当前窗口
nmap wc <C-w>c " 关闭当前窗口
nmap ws <C-w>s " 水平分割当前窗口
"--------------------------------------------------------------------------------
" 模仿MS Windows中的保存命令: Ctrl+S
"--------------------------------------------------------------------------------
imap <C-s> <Esc>:wa<cr>i<Right>
nmap <C-s> :wa<cr>
"###############################################################################
" The following is the Plugins‘ setting
"###############################################################################
"--------------------------------------------------------------------------------
" TagList :Tlist
"--------------------------------------------------------------------------------
let Tlist_Show_One_File= 1 "
let Tlist_Exit_OnlyWindow = 1 "
let Tlist_Use_Right_Window=1 "
"--------------------------------------------------------------------------------
" netrw 文件浏览器 :e <PATH>
"--------------------------------------------------------------------------------
"let g:netrw_winsize = 20 " 浏览器宽度
"--------------------------------------------------------------------------------
" QuickFix
"--------------------------------------------------------------------------------
nmap <F6> :cn<cr> " 切换到下一个结果
nmap <F7> :cp<cr> " 切换到上一个结果
"--------------------------------------------------------------------------------
" WinManager :WMToggle
"--------------------------------------------------------------------------------
let g:winManagerWindowLayout= ‘FileExplorer|TagList‘ "
let g:winManagerWidth = 20 "
let g:defaultExplorer = 0 "
nmap <C-w><C-b> :BottomExplorerWindow<cr> " 切换到最下面一个窗格
nmap <C-w><C-f> :FirstExplorerWindow<cr> " 切换到最上面一个窗格
nmap wm:WMToggle<cr> " 输入命令:WMToggle打开
"--------------------------------------------------------------------------------
" MiniBufExp
"--------------------------------------------------------------------------------
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
"--------------------------------------------------------------------------------
" cscope
"--------------------------------------------------------------------------------
cs add /home/nfs/microwindows/src/cscope.out /home/nfs/microwindows/src
":set cscopequickfix=s-,c-,d-,i-,t-,e-
":set cscopetag
" 按下面这种组合键有技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪
" 就回到nomal状态了
" <C-_>s的按法是先按"Ctrl+Shift+-",然后很快再按"s"
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<cr><cr>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<cr><cr> :cw<cr>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<cr><cr> :cw<cr>
"--------------------------------------------------------------------------------
" Grep
"--------------------------------------------------------------------------------
"直接按下<F3>键来查找光标所在的字符串
nnoremap <silent> <F3> :Rgrep<CR>
"--------------------------------------------------------------------------------
" A
"--------------------------------------------------------------------------------
nnoremap <silent> <F12> :A<CR>
"--------------------------------------------------------------------------------
" NERD_commenter
"--------------------------------------------------------------------------------
let NERD_c_alt_style = 1 " 将C语言的注释符号改为//, 默认是/**/
"nmap <F5> ,cc
"--------------------------------------------------------------------------------
" SuperTab :SuperTabHelp
"--------------------------------------------------------------------------------
"let g:SuperTabRetainCompletionType = 2
"let g:SuperTabDefaultCompletionType = "<C-X><C-O>"
"--------------------------------------------------------------------------------
" CVim :help csupport
"--------------------------------------------------------------------------------
let g:C_Comments = "no" " 用C++的注释风格
let g:C_BraceOnNewLine = "no" " ‘‘是否独自一行
let g:C_AuthorName= "Lmy" "
let g:C_Project= ‘F9‘ "
let g:Cpp_Template_Function = "c-function-description-Lmy" "
let g:C_TypeOfH = "c" " *.h文件的文件类型是C还是C++
"##################################################################
"########################## End Of Vimrc ##########################
"##################################################################
" if filetype is C
" TODO
" fi
以上是关于《Linux运维葵花宝典---vi/vim手册》的主要内容,如果未能解决你的问题,请参考以下文章