Vim篇

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中的换行:

\r,表示回车,在vim中显示为^M

\n,表示换行,在vim中显示为回车且换行,对于window的风格换行(\r\n),在vim中显示为^M

如果使用:%s命令来进行替换,应当使用\r而不是\n,    :%s/,/\r/   如果使用\n,目标会被替换为空字符NULL

将window风格换行(\r\n)的文件转换为Unix风格的换行(\n),    :set fileformat=unix :w

                                                :set fileformat=unix, dos表示vim将UNIX文件格式作为第一选择,dos的格式作为第二格式

在vim中搜索换行。仍然使用\n来表示,   /foo\nbar

vim显示的显示换行符合制表符,      :set list,换行符用“$”表示,制表符用“^I”表示

:%s/\n//g,  删除所有的换行符

:%s/\r//g,  删除dos文件中的回车符"^M"

:%s/\r/\r/g,  将dos文件中的回车符转换为真正的换行符

:%s/^\n\{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匹配非单词字母

\t,匹配TAB字符,\s匹配空白字符,\S匹配非空白字符,\l小写字母,\L非小写字母,\u大写字母,\U非大写字母

匹配中的数量字符:

\+匹配1-任意值,\?匹配0和1,\{n,m}匹配n-m个,\{-n,m}表示尽可能的匹配少的

锚位字符集:

\<单词词首,\>单词词尾,$行尾,^行首

替换变量的使用:

:s/\(\w\+\)\s\+\(\w\+\)/\2\t\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    "读取文件\t,转换为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。 

posted @ 2015-03-30 13:46  _9_8  阅读(1538)  评论(0编辑  收藏  举报