Vim常见命令及实用配置

vim 复制粘贴

常见使用操作
代码自动对齐:gg=G
全选:ggVG
复制到系统剪切板:先ggVG全选,然后“+y复制(引号、加号不能少)
系统剪切板复制到vim:shift+ctrl+v(或者设置vim与系统共享剪切板)
翻页:ctrl + f (向下) ctrl+b(向上)
vim中从系统函数跳转到相应man文档:(命令模式下)光标移动到函数,按(n)K(shift+k),若要指定man第几章先按章节序号n
显示宏定义信息 光标移动到宏上按[d
% 跳转到配对的括号去
[[ 跳转到代码块的开头去(但要求代码块中’{‘必须单独占一行)
gD 跳转到局部变量的定义处
‘’ 跳转到光标上次停靠的地方, 是两个’, 而不是一个"
ctrl+R 搜索历史命令

vim括号匹配和跳转技巧:http://blog.csdn.net/caisini_vc/article/details/38351133
%:跳转到匹配的括号

多行注释:

  1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
  2. 在行首使用上下键选择需要注释的多行;
  3. 按下键盘(大写)“I”键,进入插入模式;
  4. 然后输入注释符(“//”、“#”等);
  5. 最后按下“Esc”键。
    注:在按下esc键后,会稍等一会才会出现注释

删除多行注释:

  1. 首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;
  2. 选定要取消注释的多行;
  3. 按下“x”或者“d”.

vim 打开多文件 https://blog.csdn.net/derkampf/article/details/72629875
:bn(ext) 切换下一个
:bp(re) 切换上一个

vim-tabe多标签切换
vim -p 打开多文件在一个窗口,多标签
gt切换
https://www.cnblogs.com/liqiu/archive/2013/03/26/2981949.html

当前行作为屏幕第一行:zt(或z 回车)
zz(或z.) 将光标所在行移动到屏幕中间
zb(或z-) 将光标所在行移动到屏幕低端
https://blog.csdn.net/u011729865/article/details/50196737

工作模式:
1. 命令模式 – 打开文件之后, 默认进入命令模式
2. 编辑模式 – 需要输入一些命令, 切换到编辑模式
3. 末行模式 – 在末行模式下可以输入一些命令

  1. vim编辑器的使用
    命令模式下的操作:

     1>. 光标的移动
     		H  J  K  L
     	前  下  上  后
     	移动光标到下一个单词:w
     	移动光标到上一个单词:b
     	移动到行首: 0
     	移动到行尾: $
     	文件开始位置:gg
     	文件末尾:G
     	移动到第n行:nG、ngg
     	向下移动n行:n<Enter>
         向后移动n个字符:n<Space>
     	移动光标到屏幕的首行:H
     	移动光标到屏幕的中间一行:M
     	移动光标到屏幕的尾行:L
     	
     2>. 删除操作
     		删除光标后(前)边的字符: x(X)
     		删除单词: dw  (光标移动到单词的开始位置, 否则只能删除一部分)
     		删除光标到行首的字符串: d0
     		.........行尾.......: D(d$)
     		删除光标当前行: dd
     		删除多行: ndd (n -- 自然数)
     		向上删除直到第一行:dgg
     		向下删除直到最后一行:dG
     		删除当前行到第n行的所有内容:dnG
     		
     3>. 撤销操作
     			撤销: u
     			反撤销: ctrl + r
     			
     4>. 复制粘贴
     		复制: yy
     		复制多行: nyy
     		粘贴: p (光标所在行的下一行)
     		粘贴: P (光标所在行)
     		剪切 == 删除
     		
     5>. 可视模式
     		切换到可是模式: v
     		选择内容: hjkl
     		操作: 复制: y   删除: d
     		
     6>. 查找操作
     		1). /hello
     		2). ?hello
     		3). # -- 把光标移动到查找的单词身上 , 按#
     		遍历时候的快捷键: N/n
     		
     7>. r: 替换当前字符
     
     缩进:
     		向右: >>
     		向左: <<
     8>. 查看man文档
    

    文本模式下的操作:
    切换到文本模式:

     	a -- 在光标所在位置的后边插入
     	A -- 在当前行的尾部插入
     	
     	i -- 在光标所在位置的前边插入
     	I -- 在光标所在行的行首插入
     	
     	o -- 在光标所在行的下边开辟一个新的行
     	O -- .............上.........
     	
     	s -- 删除光标后边的字符
     	S -- 删除光标所在的行
    

    末行模式下的操作:

     	查找: :s/tom/jack/g
     				:%s/tom/jack/
     				:20,25s/tom/jack/g
     	保存退出:
     		q: 退出
     		q!: 退出不保存
     		w: 保存
     		wq: 保存退出
     		x: == wq
    

    在命令模式下保存退出: ZZ
    分屏操作:
    1>. 水平分屏
    2>. 垂直分屏

Vim简单实用配置:

set nocompatible	"抛弃vi
set number			"显示行号
set mouse=c			"开启鼠标
syntax on			"语法高亮
set hlsearch		"搜索结果高亮显示
set clipboard=unnamed

set tags=tags;
set autochdir

set ts=4
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smartindent
set expandtab

set foldenable		"开启代码折叠
set foldlevel=4		"折叠最大4层
set foldmethod=indent

" 按F8按钮,在窗口的左侧出现taglist的窗口,像vc的左侧的workpace
nnoremap <silent> <F8> :TlistToggle <CR>
" :Tlist              调用TagList
let Tlist_Auto_Open=1
let Tlist_Show_One_File=1                    " 只显示当前文件的tags
let Tlist_Exit_OnlyWindow=1                  "如果Taglist窗口是最后一个窗口则退出Vim
let Tlist_Use_Right_Window=0                 " 在右侧窗口中显示
let Tlist_SHow_Menu=1
let Tlist_File_Fold_Auto_Close=0             " 自动折叠

filetype plugin indent on

"cscope
if has("cscope") && filereadable("/usr/bin/cscope")
	set cscopetag   " 使支持用 Ctrl+]  和 Ctrl+t 快捷键在代码间跳来跳去
	" check cscope for definition of a symbol before checking ctags:
	" set to 1 if you want the reverse search order.
	set csto=0

	" add any cscope database in current directory
	if filereadable("cscope.out")
		 cs add cscope.out
	" else add the database pointed to by environment variable
	elseif $CSCOPE_DB !=""
		 cs add $CSCOPE_DB
	else
       let cscope_file=findfile("cscope.out", ".;")
       let cscope_pre=matchstr(cscope_file, ".*/")
	   "let cscope_pre = system("pwd")
	   "let cscope_pre = strpart(cscope_pre,0,strlen(cscope_pre) - 1)
       if !empty(cscope_file) && filereadable(cscope_file)
	       exe "cs add" cscope_file cscope_pre
       endif
	endif

	" show msg when any other cscope db added
	set cscopeverbose

	nmap <C-/>s :cs	find s <C-R>=expand("<cword>")<CR><CR>
	nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
	nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
	nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
	nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><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>
	nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
" ctags自动更新
function! UpdateCtags()
	let curdir=getcwd()
	while !filereadable("./tags")
		cd ..
		if getcwd() == "/"
			break
		endif
	endwhile
	if filewritable("./tags")
		!ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q
		TlistUpdate
	endif
	execute ":cd " . curdir
endfunction

autocmd BufWritePost *.c,*.h,*.cpp call UpdateCtags()

"解决复制到vim缩进错乱
set pastetoggle=

https://www.douban.com/note/233264337/

http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html

http://pizn.github.io/2012/03/03/vim-commonly-used-command.html

http://blog.csdn.net/ithomer/article/details/5929428

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值