首页 > 技术文章 > GVIM操作

bixiaopengblog 2017-09-05 17:30 原文

括号自动补全 :

inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i

 

补全功能 :

crtl + p : 向上选择自动补全的数据

crtl+n   : 向下选择自动补全的数据

 

关闭文件并推出

命令模式:crtl + wq

命令键上下左右移动 :

左下上右 : HJKL

 

撤销命令 :

命令模式  u       插入模式 ctrl + z

 

编辑模式 --》插入模式:

  i :inset,在光标所在处的前方输入

  a:append,在光标处的后方输入

  o:在光标所在出的下方的行首新打开一个新行

  I:在光标所在行的行首输入

  A:在光标所在行的行尾输入

  O:在光标所在出的上方打开一个新行

 

插入模式 --》编辑模式

  ESC

 

编辑模式 --》末行模式

 

末行模式 --》编辑模式

ESC

 

保存并退出 :

  :q 退出

  :q!强制推出

  :wq保存并推出

  :w 保存

  :x保存并推出

  ZZ保存并推出

 

字符间跳转:

  h    左

  j    下

  k    上

  l    右

 

单词之间的跳转 :

  w   下一个单词的词首

  b   当前或前一个单词的词首

  #commmand  #指定的个数

  5k      向上跳5行

 

行首行尾跳转 :

  ^  跳转至行首的第一个非空白字符

  0  跳转至行首

  $  跳转至行尾 

 

行间调转 :

  1G  第一行

  G  最后一行

  #G  跳转至指定的行----4G第4行

翻屏 :

  ctrl+f  向文件尾翻屏一屏

  ctrl+b 向文件首部翻一屏

  ctrl+d 向文件尾部翻半屏

  ctrl+u   向文件首部翻半屏

字符编辑

  x  删除光标所在出的字符

  #x  删除光标所在出的#个字符

 

删除命令

  d 删除命令,可结合光标跳转字符,实现范围删除

  d$    删除至行尾

  d0    删除至行首

  dd    删除整行

  #dd    删除光标起始的#行

粘贴命令 

  p    如果缓冲区的内容为正行,则粘贴在当前光标所在行的下方;否则,粘贴在当前光标的后方

  P    与p相反

 

复制命令

  y    复制,工作行为类似与d命令

  yy    复制一整行

  

修改命令

  c    类似于d命令,但是操作之后会自动转为插入模式

 

可视化模式

  v    按字符选定

  V    按行选定

 

撤销操作 

  u(undo)  撤销操作   

  #u      撤销前#次操作

 

恢复之前的撤销

  Ctrl+r    

重复执行前一个编辑操作

  .

列操作

  1、进入可视化模式

  2、用鼠标选中指定区域

  3、插入模式 输入想要的字符

  4、esc进入命令模式后,就完成了列操作

 

"选中单词声明为wire
:map ;w ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/wire \1;/<cr><F8>e*N`sj
"选中单词声明为reg
:map ;r ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/reg \1;/<cr><F8>e*N`sj
"选中单词声明为input
:map ;i ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/        input   \1,/<cr><F7>e*N`sj
:map ;ow ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/        output  wire    \1,/<cr><F7>bb*N`sj
:map ;or ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/        output  reg     \1,/<cr><F7>bb*N`sj

 在操作时,命令模式要选中字符的第一个字母

 这是从网上找的一些指令,可以简化步骤

 

"例化光标选中变量
:map <F2> ebmsd^:.s/^ *\([a-zA-Z][a-zA-Z0-9_]*\).*$/        .\1                        (\1                        ),/<cr>*^24ldw24ldw`sj
"生成当前时间
:imap <F2> <C-R>=strftime("%c")<CR>
"调整格式以便对齐(例化后的)
:map <F6> :s/^ *\./        ./<cr>^f(i                              <ESC>f)i                               <ESC>^24ldw24ldwa  <ESC>hdwj
"调整module定义中的变量,逗号和注释的位置
:map <F7> 0f,bi                          <ESC>^24ldwf,i                                 <ESC>^48ldwa        <ESC>dw^j
"调整reg,wire所在行的变量,逗号和注释的位置
:map <F8> 0f;bi                                <ESC>032ldwf;i                                    <ESC>064ldwa        <ESC>dw^j

F2 顶层例化中作为模板     F7 更改module里面的排版  F8  更改reg , wire里面的排版   

注意:用F2命令时,必须要用模板里的规格例化。否则无法生成模板

 地址定界 :

    末行模式:#  表示定在第几行

         $ 表示最后一行

 

 查找 :

    末行模式:/###     从光标位置开始,向尾部查找###

         :/###    从光标位置开始,向文件顶部查找###

 

查找并替换:

    :set nohlsearch  关闭查找高亮

    :set hlsearch     打开查找高亮

       :%s/vivian/sky/  用sky  替换 vivian

 

 关闭多窗口:

    :close

    :q!

 

 

推荐阅读