最近学gvim,mark低先

1. vim基本用法:模式,光标移动,查找替换,复制粘贴删除

 

1.1 帮助

:help

:help command

 

1.2 模式切换
    命令模式     Esc, Ctrl-c, 配合光标移动可用Alt-h,Alt-j,Alt-k,Alt-l
    编辑模式     i 在当前位置编辑 , a在当前位置后面插入,I在行首插入,A在行尾插入,o添加新行
    可视化模式   v块模式,V行块模式,Ctrl-v列块模式

下面的操作方式和快捷键基本上都是在命令模式下的,编辑模式按键一般只能输入文字。

1.3 输入方式
    直接按键盘编辑     如i
    :command         如:set nu
    执行shell命令     :!command  如:!pwd


1.4 撤销,重做
    撤销上一次的编辑操作     u, U
    撤销未保存的全部编辑操作,重新载入文件 :e!

    重做上一次撤销的编辑操作 Ctrl-r

 

1.5 保存,退出

    保存文件 :w

    关闭文件 :q

    保存并关闭文件 :wq

    不保存强制关闭文件 :q!

    关闭所有文件退出 :qa


1.6 移屏

        下翻页 Ctrl-f

        上翻页 Ctrl-b

        下翻行 Ctrl-e

        上翻行 Ctrl-y

 

1.7 光标定位快捷键
    到指定行  :行号,行号G
     到文件头 1G
     到文件尾 G
     左下上右 h,j,k,l
     下一个字 w,上一个字 b   
     到行首   ^
     到行尾   $
     行尾插入 A,添加空行 o

1.8 在函数中定位光标
[[  转到上一个位于第一列的“{”
]]  转到下一个位于第一列的“{”
{   转到上一个空行
}   转到下一个空行

 

1.9 查找当前文件

n,N       查找到key后,n跳到后一个位置,N跳到前一个位置

* , #     当前光标所在的词key作为关键字,精确匹配查找,相当于/\<key\>

g*, g#    当前光标所在的词key作为关键字,忽略大小写查找,相当于/key

/key      从当前光标位置开始向后查找key

?key      从当前光标位置开始向前查找key

/\<key\>,?\<key\>  精确匹配查找key

 

1.10 批量替换:%s/要被取代的字串/新的字串/g

 

1.11 复制粘贴删除
      复制行 yy    复制n行 nyy
      粘贴行 p
      删除行 dd    删除n行 ndd
      删除字 dw    复制字  yw

      可视块选择复制:
             进入可视化模式 v,V,Ctrl-v
             可视化模式下,方向键选择块
             按y复制选择的块

 

2. 配置:显示和编辑样式,配置文件

 

2.1 显示和编辑样式
     在状态行显示文件名set statusline+=%f,set laststatus=2
     显示行号 :set nu    隐藏行号 :set nonu
     自动缩进 :set autoindent
     c风格的缩进 :set cindent
     显示断行符等特殊符号 :set list

2.2 配置文件
    vim自带的配置文件  /etc/vimrc
    用户自定义的配置文件 ~/.vimrc,自己创建。把自己的配置都写这里。
    语法高亮 syntax on

 

 

3. vim用法: 多行注释,多文件,多窗格编辑,保存会话


3.1 多行注释
多行注释按键操作:
      注释:Ctrl-v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符比如"#",按Esc,就会全部注释了。
      删除:Ctrl-v 进入列编辑模式,向下或向上移动光标,选中注释部分,按d,就会删除注释符号。

多行注释使用替换命令:
            :%s/^/\/\//g来在全部内容的行首添加//号注释
             :2,50s/^/\/\//g在2~50行首添加//号注释
            反过来替换既是删除操作。

3.2 编辑多个文件
    打开多个文件 $ vim filename1 filename2
    切换文件 :prev,:next,:prev!,:next!,first,last  ,只要切换出来过,就在缓冲区里了
    显示打开的文件列表 :args

    打开新的缓冲区看别的文件 :e filename
    切换最近的两个文件(缓冲区) :e# 或 Ctrl-^
    显示缓冲区的文件列表 :buffers
    关闭其中一个(当前)文件 :bd,:bd 1,:bd 2,序号按:buffers显示的
    切换到某个文件 :b 1,:b 2,序号按:buffers显示的
    切换到上一个文件 :bp,:bprev
    切换到下一个文件 :bn,:bnext   

3.3 多窗口编辑

分割窗口
    水平分割
       :sp //当前编辑的文件分割一个窗口再打开
       :spfilename //分割一个窗口出来,打开文件filename
       :split
       :new

    垂直分割
       :vsplit
       :vnew
切换窗口
    Ctrl-w 上下左右键
    Ctrl-w h,j,k,l     //h左,j下,k上,l右  //Ctrl按下,按w松开,Ctrl松开,按h

移动窗口
    Ctrl-W H,J,K,L     //H左,J下,K上,L右  //锁定CapsLock就可以得到大写

改变窗口大小
    水平最大化当前窗口    Ctrl-w Ctrl-- //这个是特殊的:Ctrl按下,按w松开,再按-松开,最后松开Ctrl
    等分窗口    Ctrl-w =
    调整窗口大小    Ctrl-w +增加窗口大小一行,Ctrl-w -减少窗口大小一行

显示命令历史窗口
    q:或q/,退出:q

让当前文件占据整个窗口
    Ctrl-w o

关闭其中一个(当前)窗口
    Ctrl-w c  //其实文件还在buffers中

让用缓冲区的文件来到分割窗口
    Ctrl-w Ctrl-^  //保持Ctrl按下

 

3.4 保存所在目录的环境和状态,会话

如果在vim中已经打开了好多窗口,想要保持这个环境,等下次编辑浏览时再载入。

:help mksession         查看mksession的帮助 

:mksession!             保存当前的vim状态,在当前目录会产生一个会话文件Session.vim。

$ vim -S                vim会自动载入当前目录的会话文件Session.vim,之前:mksession! 保持的状态又回来啦。

:mksession! work.vim    保存当前的vim状态到会话文件work.vim

$ vim -S work.vim       vim载入会话文件work.vim,之前:mksession! work.vim保持的状态又回来啦。

 

也可在vim中手动载入会话:

:source Session.vim     载入Session.vim保持的状态。

:source work.vim        载入work.vim保持的状态。

 

配置自动保存和载入会话

这个配置好后,第一次在要自动保持会话的目录下进入vim,用命令:mksession! project.vim。以后使用直接在当前目录$vim即可。

如果想打开和关闭vim时自动保存和载入会话,可以在配置文件~/.vimrc中加入:

" auto save and load session
let g:AutoSessionFile="project.vim"
let g:OrigPWD=getcwd()
if filereadable(g:AutoSessionFile)
        if argc()==0
                au VimEnter * call EnterHandler()
                au VimLeave * call LeaveHandler()
        endif
endif
function! LeaveHandler()
        exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
endfunction
function! EnterHandler()
        exe "source ".g:AutoSessionFile
endfunction
参考vim中session自动保存及加载

 

4. 浏览代码:ctags,Taglist,NERD_tree,cscope


4.1 热门vim脚本
http://vim.sourceforge.net 下 scripts->browse all

 

4.2ctags跳转到定义处

ctags是一个用来产生代码索引文件的插件,支持很多语言。

可以用Ctrl-]命令跳转到函数的定义处,也可以用命令来搜索函数的定义,非常好用。

安装ctags
    如果没有安装ctags,fedora的shell下可以用 # yum -y install ctags安装。

创建tags文件
   shell下,在需要创建tags文件的目录下用 $ ctags -R,那么整个目录下的函数,宏,变量,类,结构等都加上了tags。

使用ctags
   按键跳转Ctrl-],Ctrl-t,Ctrl-o
      在创建tags文件的目录下,用vim打开的文件中,光标移到一个被调用的函数名上,按Ctrl-]就会自动跳转到该函数的定义处,Ctrl-t返回。

   命令跳转 :tags  functionname
      在用vim打开的文件中,用命令:tags  functionname。:ta functionname

   打开时搜索并跳转
      vim -t functionname

   多个匹配tags时跳转

      :tnext,:tprev,:tn,:tp

 

4.3Taglist函数和变量列表
Taglist是vim的源代码浏览插件,可以以窗口方式查看函数列表,变量列表等。
Taglist的实现依赖ctags。

安装Taglist
    1. 在 http://www.vim-taglist.sourceforge.net/screenshots.html 下载最新版的Taglist软件包。
    2. 在个人用户目录下创建  .vim目录,将taglist_**.zip中的内容解压到该目录。
    3. 进入Vim,在命令模式下输入命令 "  helptags ~/.vim/doc"即可完成Taglist的安装。
    4. 输入命令“:Tlist”检查是否安装成功。


修改配置文件

    let Tlist_File_Fold_Auto_Close=1 除了当前窗口显示的文件,其它文件折叠。
    let Tlist_Exit_OnlyWindow=1  如果Tlist是最后一个窗口,自动退出vim。

使用 :Tlist
    打开 Vim 之后,使用命令 :Tlist激活 Taglist窗口; 按Ctrl-w w在两个窗口来回跳转。

    :Tlist

    :TlistToggle

Tlist快捷键
    在Tlist列表窗口中,以函数为例
    看函数原型        空格 
    看函数定义        p
    跳转到函数定义     移动到函数名处Enter
    折叠/展开         - ,+
    全部折叠/全部展开  =,*
    更改列表排序方式   s
    更新列表          u
    放大缩小窗口      x
    退出窗口          q
    上/下一个文件     [[,]]

 

配置:Tlist快捷键

    .vimrc中写:
     nnoremap <silent><F2> :TlistToggle<CR>

Tlist帮助

    在Tlist窗口按F1

    :help Tlist             查看Tlist命令帮助

    :help 'Tlist*'          查看Tlist选项帮助

    :e ~/.vim/taglist.txt   直接打开文档看帮助

 

4.4 NERD_tree 目录树列表

安装NERD_tree

  1.在vim.sourceforge.net 下载NERD_tree包。

  2.把NERD_tree包解压到.vim下,之后会看到.vim下多了文件 doc/NERD_tree.txt,plugin/NERD_tree.vim。

  3.进入vim,输入:NERDTree检查是否安装成功。

使用NERDTree

    打开 vim 之后,使用命令 :NERDTree激活 NERDTree窗口; 按Ctrl-w w在两个窗口来回跳转。

    :NERDTree

    :NERDTreeToggle

NERDTree快捷键

    o , Enter 展开/折叠目录

    p 上一层目录

    / 查找文件

    q 退出

 

帮助

    ?

    :e ~/.vim/doc/NERD_tree.txt

 

忽略特定文件类型

    配置文件中写:

    let NERDTreeIgnore = ['.*\.o$','.*\.ko$','.*\.gz$']  忽略后缀为.o,.ko,.gz的文件。

 

配置:NERDTree快捷键

    .vimrc中写:

    nnoremap <silent><F3> :NERDTreeToggle<CR>

4.5 bufexplorer 缓冲区文件列表

安装bufexplorer类似NERD_tree。

使用BufExplorer

    :BufExplorer

配置:BufExplorer快捷键

    .vimrc中写:

    nnoremap <silent><F4> :BufExplorer<CR>

 

4.6cscope在整个目录查找函数被调用位置

cscope可以在整个目录查找函数定义,查找函数被调用位置等,非常好用。

安装cscope

    fedora下,# yum -y install cscope

生成cscope数据库

    在所要的目录下

    $ find . -name '*.c' -or -name '*.h' -or -name '*.S' | cscope -Rbq

    在当前目录会产生3个文件cscope.out,cscope.in.out,cscope.po.out。

载入cscope数据库

    在当前目录进入vim

    :cs add cscope.out

使用cscope查找整个目录

    :cs help

    :cs find g timer_interrupt  查找timer_interrupt的定义

    :cs find c timer_interrupt  查找调用timer_interrupt的地方

    :cs find e run_timer          查找关键字run_timer

    find 可以简写为f

多个匹配间跳转

    :cnext,cn

修改配置文件

    set nocst                    让跳转到定义的命令:ta 和 Ctrl-]调用ctags的tag,帮助:help nocst。

    set csto=1                   优先使用ctags的tag       

    "set cscopequickfix=s-,c-,d-,i-,t-,e-    使:cs find c 时直接跳转而不是列表,看个人喜好要不要设这个。
    nnoremap <C-\> :cs find c <C-R>=expand("<cword>")<CR><CR> 光标放在函数上,快捷键Ctrl-\跳转到调用这个函数的地方。    

    nnoremap <C-_> :cs find g <C-R>=expand("<cword>")<CR><CR> 光标放在函数上,快捷键Ctrl-_跳转到函数定义处或列出多个定义

 

5. 编译并修改代码错误

quickfix模式内置在vim中,编译后记录了出错的位置信息,用来定位错误位置。

 

编译

    调用当前目录下的Makefile文件编译    :make

        改变编译调用的命令                                   :set makeprg=gcc\ -g\ test.c\ -o\ test ,没有写Makefile时用

 

快速定位代码错误

    列出错误        :cl
   下一个错误      :cn
   上一个错误      :cp
   从头开始        :cnew

   打开错误列表窗口 :cw

   关闭错误列表窗口 :ccl

 

6. 调用gdb来debug:vimgdb

安装vimgdb
      vimgdb需要以补丁形式打在vim版本上,下载vim的source,对应版本的vimgdb补丁,然后按vimgdb的说明文件安装即可。
 
配置按键映射
    配置文件里加  map <F7> :run macros/gdb_mappings.vim<CR>
    这样按F7,按键映射就可以在调试模式和普通模式切换了。

使用vimgdb
   按键映射    <F7> 或 :run macros/gdb_mappings.vim
   打开gdb命令窗格      空格
   打开gdb输出窗格      在命令窗格键入gdb,按Enter
   载入可执行文件       空格打开gdb命令窗格,file test,test就是编译后生成的可执行文件
   设置断点    Ctrl-B
   开始运行    R
   继续执行    S,Ctrl-N,C
   结束       F
   退出       Q


变量监视窗口
    创建变量监视窗       :bel 30vsplit gdb-variables 
    选中变量名到监视窗    v命令选中变量,Ctrl-P添加到变量监视窗格
    输入变量名到监视窗    空格打开gdb命令窗格,输入createvar 变量名

在gdb输出窗格显示,查看
    locals变量  L,info locals
    函数stack   W,where
    断点位置    B,info breakpoints
    寄存器      info registers

参考:vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb


7. 其它

7.1 中文乱码问题
先安装运行zhcon

转载于:https://www.cnblogs.com/hapi/archive/2012/09/15/2686914.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

❤「和平精英」被python爬虫了?看看你最适合什么配件!❤

作者简介&#xff1a;不吃西红柿&#xff0c;CSDN博客专家、蓝桥签约作者。 困难像弹簧&#xff0c;你弱它就强&#xff0c;你强它更强。 求点赞、求关注 写作目的&#xff1a; 1、练习爬虫技术&#xff1b; 2、深入了解和平精英枪械属性&#xff0c;提高吃鸡概率。 一、爬前…

(相当全面)node.js 初体验

转载自&#xff1a;http://www.cnblogs.com/Darren_code/archive/2011/10/31/nodejs.html 最近写的文章收到许多朋友的反馈&#xff0c;感谢大家的支持和建议&#xff0c;让我对坚持写博客充满热情&#xff0c;一个月一篇文章确实有点少&#xff0c;所以以后尽力多做分享&#…

创作表情包(备用)

&#x1f476;&#x1f9d2;&#x1f466;&#x1f467;&#x1f9d1;&#x1f471;&#x1f468;&#x1f9d4;&#x1f468;‍&#x1f9b0;&#x1f468;‍&#x1f9b1;&#x1f468;‍&#x1f9b3;&#x1f468;‍&#x1f9b2;&#x1f469;&#x1f469;‍&#x1f9b0…

安装redis和phpredis模块

redis的下载及安装&#xff1a;ubuntu:/$ mkdir /usr/local/redisubuntu:/$ cd /usr/local/redisubuntu:/$ wget http://redis.googlecode.com/files/redis-2.4.2.tar.gzubuntu:/$ tar xzf redis-2.4.2.tar.gzubuntu:/$ cd redis-2.4.2ubuntu:/$ makeubuntu:/$ src/redis-serve…

深度 | 激光雷达独角兽Quanergy的危急时刻

来源&#xff1a;网易智能编译摘要&#xff1a;全球知名的激光雷达制造商 Quanergy 最近陷入了麻烦之中。早在2014年&#xff0c;Quanergy公司就发现自己正身处于一场对自动驾驶汽车突如其来的狂热之中。Quanergy公司制造了激光雷达技术&#xff0c;这是一种将激光反射到物体上…

R语言【dplyr】——case_when()是一般向量化的 if-else(),该函数允许您将多个 if_else() 语句矢量化

Package dplyr version 1.1.4 Parameters case_when(..., .default NULL, .ptype NULL, .size NULL) 参数【...】&#xff1a;<dynamic-dots> 一组两面公式&#xff08;two-sided formulas&#xff09;。 公式左边&#xff08;left hand side&#xff0c;LHS&#…

❤ 就这?TypeScript其实并不难!(建议收藏)❤

&#x1f388; 作者&#xff1a;不吃西红柿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;、蓝桥签约作者、Python领域优质创作者、信息技术智库公众号创建者✌。技术交流、面试刷题尽管关注咨询我。 热门专栏推荐&#xff1a; &#x1f947; 知识集锦专栏&…

EntityModelStudio系列教程2--静态建模之实体模型设计

在EMStudio中静态建模的概念和内容是来自于UML标准的&#xff0c;所以EMStudio提供的静态建模的设计能力是完全可以满足开发者的设计要求的。但是与UML标准比较&#xff0c;EMStudio中的静态建模还存在两个不同的特色&#xff1a; 1. 类与实体的概念是一致的 也就是说&#xff…

Python 编码规范(Google) (一)

Python 风格规范(Google) 本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护。 如果你关注的是 Google 官方英文版, 请移步 Google Style Guide 以下代码中 Yes 表示推荐&#xff0c;No 表示不推荐。 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行…

前沿科技山雨欲来,四大领域存创新机会

来源&#xff1a;北极光创投摘要&#xff1a;最近&#xff0c;北极光创投董事总经理杨磊&#xff0c;发表了《前沿科技山雨欲来》的主题演讲&#xff0c;他认为目前全球正处于前沿科技爆发前夜&#xff0c;他看好计算构架变革、移动终端、机器人、生物科技与IT融合四大领域的创…

❤JavaScript系列6部曲:语法篇(万字长文)❤

&#x1f388; 作者&#xff1a;不吃西红柿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;、蓝桥签约作者、Python领域优质创作者、信息技术智库公众号创建者✌。技术交流、面试刷题尽管关注咨询我。 热门专栏推荐&#xff1a; &#x1f947; 知识集锦专栏&…

工业机器人发展现状:硬件制造大同小异,视觉感知绘新蓝图

来源 &#xff1a;亿欧摘要&#xff1a;8月15日-8月19日&#xff0c;在北京亦庄国际会展中心举办了为期五天的2018世界机器人大会。小编认为&#xff0c;国内工业机器人的总体水平在未来长期时间将处于稳定上升区&#xff0c;而两极分化趋势愈显。8月15日-8月19日&#xff0c;在…

❤️JavaScript系列6部曲:流程控制(万字长文)❤️

&#x1f388; 作者&#xff1a;不吃西红柿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;、蓝桥签约作者、Python领域优质创作者、「信息技术智库」公号作者✌。技术交流、面试刷题尽管关注咨询我。 热门专栏推荐&#xff1a; &#x1f947; 知识集锦专栏&…

[C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现

本专题主要介绍下如何实现UDP广播的程序&#xff0c;下面就直接介绍实现过程和代码以及运行的结果。 一、程序实现 UDP广播程序的实现代码&#xff1a; using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.W…

我们离得开美国的软件和硬件吗?

来源&#xff1a;网易科技摘要&#xff1a;据报道&#xff0c;你当然可以淘汰很多美国产品&#xff0c;但你可能也会因此放弃许多令人惊叹的功能。据报道&#xff0c;你当然可以淘汰很多美国产品&#xff0c;但你可能也会因此放弃许多令人惊叹的功能。例如&#xff0c;超过10亿…

PostgreSQL连接池pgbouncer的使用

今天在虚拟机上整理了下pgbouncer的安装使用过程&#xff0c;记录如下。 说明&#xff1a;pgbouncer是一款轻量级针对postgresql的数据库连接工具&#xff0c;可以对客户端的连接做限制&#xff0c;防止恶意连接&#xff0c;另外也可以减少数据库的实际连接数&#xff0c;从而减…

❤️❤️❤️【资料免费领取】简历模板、职场PPT模板、硬核学习资料+PDF资料(Java、Python、大数据、机器学习)❤️❤️❤️

&#x1f345;【领取方法】 长按识别二维码&#xff0c;回复【资料】领取 目录 1、100套小编购买的简历模板&#xff08;部分截图&#xff09; 2、1000套精品PPT模板&#xff08;部分截图&#xff09; 3、大数据-学习资料&#xff08;1.3G 硬核PDF&#xff0c;官方指南&…

超20亿!2018年国家自然科学基金(重点项目)出炉!

来源&#xff1a;青塔摘要&#xff1a;8月16日&#xff0c;2018年国家自然科学基金评审结果正式揭晓。8月16日&#xff0c;2018年国家自然科学基金评审结果正式揭晓。继昨天发布了2018年国家优青项目各单位的立项情况后&#xff0c;青塔今天又整理重点项目的立项情况和完整名单…

❤️ 珊姐带你学JavaScript:数组和函数 (万文建藏)❤️

&#x1f345; 作者&#xff1a;阿珊 &#x1f345; 简历模板、职场PPT模板、技术交流尽管关注私聊我。 &#x1f345; 期许&#xff1a;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; 热门专栏推荐&#xff1a; &#x1f947; 大数据集锦…

查看本机打开的端口

一、怎样查看本机打开的端口&#xff1f;1&#xff0e; Windows本身自带的netstat命令 Netstat 显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。 netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval] 参数 -a 显示所有连接和侦…