Vim编辑器中的一些常用命令:
1:shift+* , 选取光标所在处的整个字符,并查找。(十分方便),快捷键gd
2:set nu , 显示各行行号,使得基于行的命令更方便。nG移动都某一行
3:shift+% , 应用在光标处为圆括号、大括号时,来查找另一个与之匹配的圆括号,大括号。
4:ctrl+g , 显示当前文件的名称,读写属性,当前行号,百分比等。
5:shift+g , 跳转到文件最后一行。
6:在命令模式下直接输入行号,跳转到指定行,用的比较多的(:0),跳转到第一行。num+G 直接跳转到某一行。
7:在已选中的状态下,小写n向下搜索,大写N向上搜索。
8:%s///g全局替换,相应的将%换为num1,num2表示在num1--num2的区间内进行替换,Eg:0,10 s///g(注意///内的特殊字符必须加转换字符)。
9:ctrl+v ,进入visual模式,可以进行块选择,块操作。 如y进行复制,p进行黏贴。
v进入virtual模式,以字符为单位。
V进入virtual模式,以行为单位。
10:dd表示删除一行,x表示删除当前字符(光标停在某一个字符上,一直按x可以删除其后边的所有字符)。num+dd 向后直接删除num 行
11:x来删除当前字符。
12:0移动到行首,$移动到行尾。w向后移动一个word,b向前移动一个word,e向前移动到单词尾。
13:a在光标后插入,o当前行尾插入一个新行,O在当前行首插入一个新行。
14:在insert模式下,通过ctrl+p/ctrl+n可以打开自动补全的操作。
15:s替换当前字符。
16:批量插入,在virtual block下,通过大写I来输入,之后推出编辑模式即可。
17:recording功能:在正常模式下, 按下q键进入recording模式,
选择a-z或者0-9作为缓冲器的名字,准备开始录制宏,此时gvim显示recording模式
进行自己的操作,每一步的操作都会记录到该宏中
在正常模式下输入q,结束宏的录制
使用@+缓冲器的名字的方式来调用刚才的宏,在@前加入数字,表示重复的次数
18:gvim中打开另一个文本文件,:e+路径
19::sp/:vsp进行分屏操作,:new横屏打开新的文件,加名字后就是新的文件名, ctrl w 之后 v回车 打开新的分屏
ctrl w + 方向键,切换屏幕
20:diff操作,在:vsp的基础上,使用:set diff命令
21:fold命令,在normal模式下,对一段文字自动加折叠,zf
在normal模式下,输入zo并回车,来打开折叠,关闭折叠zc
22:wrap命令,vim会自动折行超过一个屏幕的文本,:set nowrap来取消折行,需要向右移动屏幕来查看一行的内容
:set wrap恢复vim的自动折行
自动加换行符::set textwidth = 70,每行超过70个字,自动换行
23:vim中的大小写转换命令,gu/gU转换为小写和大写
ggguG:gg移动到文件的第一个字符,gu将选中的字符转为小写,G移动到文件末尾。
相应的还有gggUG
24:gvim -p *以多标签的方式打开该目录下的所有文件,:tabn表示移动到下一个tab,:tabp表示移动到下一个tab。
:qa表示关闭所有的tab。
25:ctrl + o跳转表内的变动。跳转到旧的光标位置。
ctrl + i,按跳转表,跳转到新的光标位置。
:ju打出跳转表
26:ctrl+上箭头/下箭头,带着改行,进行移动。
27:shift+左箭头/右箭头,按单词进行跳转。 或者b向前按word移动,e向后按word移动。
28::e!,放弃修改,重新打开文件。
29:{}/()在空行之间移动。
30::shell从gvim跳到shell中。exit从shell退出到gvim
31::Ex浏览当前目录下的所有文件。o打开某个具体的文件。
32:gf,go to file,快速打开文件。bf,回到之前的文件
33::w/:f+文件名 重命名文件名。
34:按单词向后移动,w,按单词向前移动,b
35:yw赋值一个word,dw删除一个word,cw删除当前到word结束,进入编辑模式
36:caw,vim中删除一个word进入编辑模式
37:ve快速选中,光标到word结束的文本,yw选中该word。
38:shift+J:表示将下一行接到上一行,合并上下行。
39:g+J:同一行内进行上下移动
40:zz:指针所在行,移动到屏幕中间
41:q:可以打开命令行窗口,当命令比较长时,可以在这个窗口进行编辑,正文中复制的数据也可以在命令行窗口使用
42:set autochdir 让vim根据编辑的文件自动切换工作目录
43:b2/b3进入buffer num进行编辑,bd num关闭某一个buffer,buffers显示所有的buffer.
44:cw,删除光标到单词结束的字符
45:R进入替换模式,不进行编辑,自动替换之后的字符
46:某个命令的帮助,:help cmd来显示调用,:verbose cmd显示最后一次执行命令的文件,:cmd直接执行vim的set等指令
:help foldmethod, :verbose set foldmethod
47:shift+C,清除鼠标之后的该行内容
48:ctrl + [,退出编辑模式,但是并不保存内容
49:行内搜索,f命令,向后搜索,fx搜索下一个x字符。
t命令,向前搜索,tx搜索下一个x字符。
50:统计某个字符的出现次数,:%s/string/&/gn 也可以限制匹配行, :n,m %s/string/&/gn
51:resize/vertical resize +- num,动态调整窗口大小。
52:-geom,指定初始gvim窗口大小,winsize,指定当前gvim的窗口大小,winpos,指定当前gvim的位置。
gvim中的自动排版:
设置,filetype plugin indent on
set cindent shiftwidth=4
然后在可视模式下,“=”来完成选择区域的自动排版
gvim中的标记:
m{a-z},只是用来标记当前文件。
m{A-Z},全局标记,退出gvim之后,再打开,标记还在。
`{a-z},移动到标记位置,
:marks,显示所有的标记;
:delmarks!,删除所有的标记;
:delmarks a b,删除标记a和b;
:delmarks a-c,删除标记a b c;
gvim中的文件操作:
1)%表示当前文件的文件名, :w % %.bak将文件备份到.bak
2)直接打开目录, :Explore,浏览该目录 :Sexplore,在水平分割窗口浏览该目录 :Vexplore,在垂直分割窗口浏览该目录
3)直接用bash命令来打开, :ls,显示该目录下的文件,可以使用,:Ex命令来执行新的命令
r!command,可以将cmd的执行结果,插入到当前行的下一行。 r!date
起始行号,结束行号!command,将执行范围内的内容交给shell命令处理。1,4!sort
.默认表示当前行,.!tr [a-z] [A-Z],对当前行大小写转换。
1,3w!sort,只是将范围内的内容交给shell命令处理,但是并不更新vim中的文件内容。
gvim中的换行:
,表示回车,在vim中显示为^M
,表示换行,在vim中显示为回车且换行,对于window的风格换行( ),在vim中显示为^M
如果使用:%s命令来进行替换,应当使用 而不是 , :%s/,/ / 如果使用 ,目标会被替换为空字符NULL
将window风格换行( )的文件转换为Unix风格的换行( ), :set fileformat=unix :w
:set fileformat=unix, dos表示vim将UNIX文件格式作为第一选择,dos的格式作为第二格式
在vim中搜索换行。仍然使用 来表示, /foo bar
vim显示的显示换行符合制表符, :set list,换行符用“$”表示,制表符用“^I”表示
:%s/ //g, 删除所有的换行符
:%s/ //g, 删除dos文件中的回车符"^M"
:%s/ / /g, 将dos文件中的回车符转换为真正的换行符
:%s/^ {3}//g, 删除三行空行
gvim中的正则表达式:
vim中的正则表达式,主要用在/和:s命令中,vim有一个magic的设定,表示元字符的反斜扛问题,可以通过mM来临时开关
magic(m):表示除了$.*^之外的其他元字符都要加反斜扛,magic(M):表示除了$^之外的其他元字符要加反斜扛
/m.* 查找任意字符串, M.*查找.* .*的转义只需要加一个反斜扛
其他的元字符:/ \ [ 分别表示反斜扛,左框
匹配中的字符集:
[abc], [a-d]显示指定字符集,[^abc]除abc之外的字符。
d,数字集合,D,非数字集合,x匹配十六进制数,X匹配非16进制数,w匹配单词字母,W匹配非单词字母
,匹配TAB字符,s匹配空白字符,S匹配非空白字符,l小写字母,L非小写字母,u大写字母,U非大写字母
匹配中的数量字符:
+匹配1-任意值,?匹配0和1,{n,m}匹配n-m个,{-n,m}表示尽可能的匹配少的
锚位字符集:
<单词词首,>单词词尾,$行尾,^行首
替换变量的使用:
:s/(w+)s+(w+)/2 1/ 交换匹配到的word1和word2的位置。
gvim中的g命令:
g命令表示对文本进行搜索,匹配行进行相应的操作,g!命令或者v命令表示对没有匹配到的行,进行相应的操作
:g/<pattern>/d:将所有匹配到的行,删除
:g!/<pattern>/d:将所有没有匹配到的行,删除
:g/^s*$/d:删除所有空白行
:g/<pattern>/t$:将匹配到的行,都copy到文件尾部 :t表示copy到
:g/^/m0:将所有的行依次移动到行首,实现行倒序排列
:g/^/+1d:删除所有的偶数行
:g/<pattern>/s/aaa/bbb/:将匹配到的行内的aaa转换为bbb
vim配置中的map/nmap/vmap操作:
映射可以应用在5中模式中,普通模式,可视模式,插入模式,命令行模式,操作等待模式:
map lhs rhs:将键lhs映射为rhs
noremap/unmap:不能重新remap/取消map
mapclear:清除映射
这四个命令,都可以加前缀i(插入模式),(c命令行模式),(n正常模式),v(可视模式)表示在某个模式下有效。
nmap:只是normal模式下有效
特殊参数:<buffer>, 映射只局限于当前缓冲区,<silent>,执行命令时,不在命令行回显,<unique>在定义键时,检查该键是否已经被映射
map <silent> <ctrl-w> :w! <CR>
<leader> <mapleader>两个全局变量
vim中括号的自动补全:如果需要跳出该补全,需要写一个function
inoremap ( ()<ESC>i
inoremap { {}<ESC>i
vim中的折叠
1)设置折叠方式:set foldmethod/fdm = ***
主要方式有六种,manual/indent(缩进,对大括号的中间部分进行折叠)/expr/syntax/diff/marker,其中marker和manual可以使用折叠命令进行折叠
2)折叠命令:zf创建折叠,zo打开折叠,zC所有折叠点进行折叠,zD,删除所有折叠点,zc对单个折叠点折叠,zd对单个折叠点删除
EX mode shift q
ex是unix下的一个文本编辑器,在早期,显示器并不像现在这么好用,只能按行显示,当需要显示某行时,需要显示的输入命令,显示器才会显示那一行。
而vi就是ex的virtual mode。
vi中的:w等命令都是直接来自于ex命令的,
ex filename,打开某一文件。输入virtual或者vi直接进入普通的vi界面。
ex命令都是基于行的,而获得行号的命令有:
1) 3:直接输入行号;
2) 3,6:行范围;
3) .:当前行;
4) /pattern/ :满足pattern的第一行;
5) $:最后一行;
6) %:每一行;
相应的命令有:
1) d:删除
2) m:move 移动
3) 打印出全部搜索结果,:g/pattern/nu
4) 使用|,批处理,3,6d | g/pattern/nu
vimrc配置:
1) 设置高亮搜索set hlsearch,搜索不区分大小写,set ignorecase。
2) 使用的color scheme, set backgroud=dark, colorscheme desert。
设置字体大小,set guifont=* gvim会弹出对话框,按提示选择字体大小
3) 设置文件类型为unix, set fileformats=unix,dos。
4) 设置自动加载更新, set autoread。
5) 设置搜索行高亮,set cursorline, set cursorcolumn,hi Cursor guibg=Green, hi。
6) 设置vim默认窗口的大小,set lines=35 columns=118。
7) 设置自动切换默认的dir,set autochdir。
8) 在字节没输入完成的情况下搜索,set incsearch,高亮搜素,set hlsearch。
9) 设置自动缩进,在前一行空5个字符的情况下,回车之后,新的一行也空5个字符,set autoindent。
10) 关于折行,set wrap,会出现屏幕折行, set linebreak,会在空白或者标点处自动折行。
11) 动态显示匹配的括号, set showmatch。
12) 隐藏工具栏和菜单栏, set guioption-=m,set guioption-=T
13) 设置fold类型, set foldmethod=manual。
14) 显示行号,set nu
15) 设置鼠标亮度,hi Cursor guibg=Green, hi Cursor guifg=Black,
设置当前列高亮,hi CursorColumn guibg=LightBlue guifg=slategrey。
设置当前列高亮,hi cursorline guibg=purple guifg=slategrey。
设置command的高亮,hi Comment gui=bold guifg=gray50。
16) 设置状态行,set laststatus=2,hi StatusLine guifg=SlateBlue guibg=Gray。
16) h:cmd 可以打开所有的vim help文档。
17) 通过map在gvim中实现svn的命令:
let $filename = expand("%") “”扩展当前文件名,存在变量filename中。
nmap <Leader>co :! svn co $filename
nmap <Leader>ci :! svn ci $filename
nmap <Leader>up :! svn up $filename
15) 设置大小写的匹配,set ignorecase,匹配时,不区分大小写。
set smartcase,匹配时,只是在存在一个或以上大写字母时,仍保持敏感。
16) 文件类型的检测,filetype on,
允许filetype的插件,filetype plugin on,
设置filetype的缩进,filetype indent on, autocmd Filetype c,cpp set tabstop=4
17) 设置语法高亮,syntax enable, syntax on,
18) noswapfile,不在产生中间的swap 文件。
19) 设置缩进宽度, set tabstop=4 "读取文件 ,转换为4个空白"
set softtabstop=4 "backspace的时候,解释为4个空白"
set shiftwidth=4 "设置tab的宽度为4"
set expandtab “自动将tab扩展为空格”
20) taglist插件使用:
let Tlist_Show_One_File=1 “只显示当前文件的tags”
let Tlist_winWidth=40 “设置taglist的宽度”
let Tlist_Exit_OnlyWindow=1 "如果taglist是最后一个窗口,则退出vim"
let Tlist_Use_Right_Window=1 “在vim窗口的右侧显示taglist窗口”
nmap <silent> <tl> :TlistToggle <CR> "打开关闭taglist"
set cscopetag之后,可以在多个tag中选择某一个路径下的tag。
21) minibufexplorer的配置:
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCtabSwitchBufs = 1
let g:minibufExplModSelTarget = 1
let g:miniBufExplVSplit = 26
let g:miniBufExplBRSplit = 1
let g:miniBufExploreMoreThanOne = 0
相对的nmap配置,
nmap <slient> tm :TMiniBufExplorer <CR>
22) nmap设置,
nmap <slient> <c-n> :bn <CR>
nmap <slient> <c-p> :bp <CR>
nmap <silent> v :Vexplore <CR>
ctags命令,ctags -R -f ~/ctags_file --languages=systemverilog work_dir。