linux下进修C语言:神器 vim + 指针相关客串
当前位置:以往代写 > C/C++ 教程 >linux下进修C语言:神器 vim + 指针相关客串
2019-06-13

linux下进修C语言:神器 vim + 指针相关客串

linux下进修C语言:神器 vim + 指针相关客串

副标题#e#

前篇回首

上篇先容了linux下C编程根基情况设置以及相关东西利用选择。

不外10个大牛9个用vim,那么咱们就来玩vim。linux下玩c就别依靠图形界面。好吧辞别Ide,呼吁行才是c的王道。

本篇文章感激名为孙鹤同学的技能支持 感激有爱的c大牛们

本文中多处利用vim插件(孙鹤提供),这些插件大多是在http://www.vim.org/处下载。

指针客串

因为结业后就没玩过c了,都说指针是c的重点。可是指针作为一种地点变量,为什么不直接操纵变量自己呢。文章末端为各人发表

vim的设置文件

~/.vimrc        用户的默认设置文件

~/.vim/plugin/   用户的默认剧本文件的存放目次

~/.vim/ftplugin/ 用户的默认文件范例相关剧本文件的存放目次

vim提供的编程支持

文本信息(行号、文件名等)

代码缩进

语法高亮

快速定位

标志位置

全文搜索

补全

多文件编辑

多窗口编辑

函数列表

文件列表

函数跳转

语法错误

字符集的编码

二进制查察

等等…

初试vim

在终端以root启动 输入vim呼吁 显示vim首页

linux下学习C语言:神器 vim + 指针相关客串

:r filename 读入一个文件内容,并写入到当前编辑器中

linux下学习C语言:神器 vim + 指针相关客串


#p#副标题#e#

按i进入插入模式

linux下学习C语言:神器 vim + 指针相关客串

编辑完后:w生存

linux下学习C语言:神器 vim + 指针相关客串

编辑完后按esc退出插入模式 进入正常模式

然后输入:sh进入shell

linux下学习C语言:神器 vim + 指针相关客串

编译运行

linux下学习C语言:神器 vim + 指针相关客串

文本信息设置

set nu(写入设置文件.vimrc中) 显示行号。

ctrl-g(正常模式下利用呼吁) 显示文件信息和当前行。

statusline.vim(插件) 增加底部状态栏。

代码缩进设置

filetype on(写入设置文件.vimrc中) 使vim对文件范例敏感。

autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(写入设置文件.vimrc中) 配置c缩进气势气魄,详细详情拜见:h cinoptions-values。

autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(写入设置文件.vimrc中) 配置一次缩进的间隔是4个空格。

=(正常模式可能可视模式下利用呼吁) 凭据缩进气势气魄排版代码。

<(可视模式下利用呼吁) 向左缩进一级。

>(可视模式下利用呼吁) 向右缩进一级。

语法高亮

filetype plugin on(写入设置文件.vimrc中) 凡是安装的vim中已经插手了各类语言的语法高亮插件,我们只需要打开文件范例相关的插件就可以了。

快速定位

gd(正常模式下利用呼吁) 跳转到局部变量界说处。

gD(正常模式下利用呼吁) 跳转到全局标量界说处。

*(正常模式下利用呼吁) 搜索并跳到下一个光标地址的单词。

g*(正常模式下利用呼吁) 成果靠近*,可是查找的方针不带\<和\>单词分界标记。

#(正常模式下利用呼吁) 搜索并跳到上一个光标地址的单词。

g#(正常模式下利用呼吁) 成果靠近#,可是查找的方针不带\<和\>单词分界标记。

#p#副标题#e#

标志位置

m{a-zA-Z0-9} (正常模式下利用呼吁) 在当前位置建造一个标志,标志名字可以利用a-z可能A-Z之间的任意字符,譬喻输入ma,就是将当前位置标志为a标志。留意a-z为单文件标志,不行跨文件利用,而A-Z0-9为全局标志,可以跨文件利用。

‘{a-zA-Z0-9} (正常模式下利用呼吁) 跳转到本文件的标志上。

:marks [{a-zA-z0-9}] (正常模式下利用呼吁) 查察指定标志的内容,不写标志号则查察所有。

:delm {a-zA-z0-9} (正常模式下利用呼吁) 删除一个标志。

全文搜索

:vimgrep(正常模式下利用呼吁) 全文搜索,成果同grep呼吁,可是支持在vim举办多文件跳转定位。

利用要领:vimgrep 正则表达式 文件。文件支持通配符,譬喻*.c代表所有的.c文件。假如但愿递归搜索,可以利用**/*,暗示搜索所有的文件。

:cl 罗列功效

:cc(正常模式下利用呼吁) 当前功效

:cn(正常模式下利用呼吁) 下一个功效

:cp(正常模式下利用呼吁) 上一个功效

:cw(正常模式下利用呼吁) 从头打开搜索功效窗口

多文件编辑

vim f1 f2 …… fn(在shell下利用呼吁) 打开多个文件。

:e 文件名(正常模式下利用呼吁) 在vim中打开新文件。

:ls(正常模式下利用呼吁) 所有打开文件列表。

:bn(正常模式下利用呼吁) 到下一个文件。

:bp(正常模式下利用呼吁) 到上一个文件。

:b# 或 ctrl-6(正常模式下利用呼吁) 到最近的前一个文件。

set  autowriteall(写入设置文件.vimrc中) 假如讨厌每次打开新文件,vim喋喋不休的要求你生存,那么可以配置自动生存。

多窗口编辑

:sp  文件名(正常模式下利用呼吁) 横向拆分窗口(多行窗口)。

:vsp 文件名(正常模式下利用呼吁) 纵向拆分窗口(多列窗口)。

ctrl-w h(正常模式下利用呼吁) 将光标移动到左一个窗口。

ctrl-w j(正常模式下利用呼吁) 将光标移动到下一个窗口。

ctrl-w k(正常模式下利用呼吁) 将光标移动到上一个窗口。

ctrl-w l(正常模式下利用呼吁) 将光标移动到右一个窗口。

ctrl-w +(正常模式下利用呼吁) 当前窗口尺寸变大。

ctrl-w -(正常模式下利用呼吁) 当前窗口尺寸变小。

ctrl-w o(正常模式下利用呼吁) 只显示当前窗口。

函数列表

taglist.vim(插件) 列表插件。

let Tlist_Use_Right_Window = 1(写入设置文件.vimrc中) 假如但愿列表在右侧显示,则插手这个设置,默认是左侧。

:Tlist(正常模式下利用呼吁) 显示函数列表。

d(在taglist窗口下利用) 从列表中删除文件。

+(在taglist窗口下利用) 展开文件。

-(在taglist窗口下利用) 折叠文件。

=(在taglist窗口下利用) 折叠所有文件。

x(在taglist窗口下利用) 显示或埋没正常窗口。

文件列表

NERD_tree.vim(插件) 横向拆分窗口(多行窗口)。

let NERDTreeWinPos = ‘right’(写入设置文件.vimrc中) 假如但愿文件树在右侧显示,则插手这个设置,默认是左侧。

:NERDTree(正常模式下利用呼吁) 显示文件列表。

函数跳转

ctags(软件,需要别的安装) 生成多种语言tag文件的软件。

Ctags –R *.c(在shell下利用呼吁) 生成当前路径所有.c文件的tag,-R代表递归。

:ta 标志 或 [g] ctrl-] 罗列标签(多个标签)可能跳转到标签(单个标签)。

ctrl-t 返回上一级。

:tags 列出标签栈。

#p#副标题#e#

语法错误

:make(正常模式下利用呼吁) 执行外部make呼吁,而且显示所有的编译告诫和错误,而且可以在vim中定位。

:cl 罗列功效

:cc(正常模式下利用呼吁) 当前功效

:cn(正常模式下利用呼吁) 下一个功效

:cp(正常模式下利用呼吁) 上一个功效

:cw(正常模式下利用呼吁) 从头打开搜索功效窗口

二进制文件查察 (鉴于有同学领略呈现分歧 将二进制查察更新为二进制文件查察)

:范畴!xxd(正常模式下利用呼吁) 把指定范畴的部门转化为二进制文件阅读方法。

:范畴!xxd -r(正常模式下利用呼吁) 把指定范畴的部门转回字符阅读方法。

字符集的编码

let &termencoding=&encoding

set fileencodings=utf-8,gbk,cp936(写入设置文件.vimrc中)

插手多种字符编码支持。

:set fileencoding(正常模式下利用呼吁) 设定文件字符编码。

增补

ctrl-p(插入模式下利用呼吁) 跳出补全菜单。

ctrl-n(在跳出补全菜单后) 下一个功效。

ctrl-p(在跳出补全菜单后) 上一个功效。

ctrl-y(在跳出补全菜单后) 选择当前功效。

ctrl-x ctrl-f(插入模式下利用呼吁) 文件名补全。

ctrl-x ctrl-i(插入模式下利用呼吁) 包括的头文件。

ctrl-x ctrl-](插入模式下利用呼吁) ctags(将在下文中先容)标记补全。

ctrl-x ctrl-o(插入模式下利用呼吁) omni补全,需要配置omnifunc变量。

vim其他呼吁 (参考vi(vim)教程)

打开文件、生存、封锁文件:

vi filename       //打开filename文件

:w              //生存文件

:w vpser.net  //生存至vpser.net文件

:q             //退出编辑器,假如文件已修改请利用下面的呼吁

:q!           //退出编辑器,且不生存

:wq              //退出编辑器,且生存文件

插入文本或行:

a      //在当前光标位置的右边添加文本

i       //在当前光标位置的左边添加文本

A     //在当前行的末端位置添加文本

I      //在当前行的开始处添加文本(非空字符的行首)

O     //在当前行的上面新建一行

o     //在当前行的下面新建一行

R    //替换(包围)当前光标位置及后头的若干文本

J    //归并光标地址行及下一行为一行(依然在呼吁模式)

移动光标:

利用上下阁下偏向键

呼吁模式下:h   向左、j   向下 、k   向上、l  向右。

空格键 向右、Backspace  向左、Enter  移动到下一行首、-  移动到上一行首。

删除:

x         //删除当前字符

nx        //删除从光标开始的n个字符

dd      //删除当前行

ndd   //向下删除当前行在内的n行

u       //取消上一步操纵

U      //取消对当前行的所有操纵

搜索:

/vpser     //向光标下搜索vpser字符串

?vpser    //向光标上搜索vpser字符串

n           //向下搜索前一个搜素行动

N           //向上搜索前一个搜索行动

跳转:

n+        //向下跳n行

n-         //向上跳n行

nG        //跳到行号为n的行

G           //跳至文件的底部

配置行号:

:set  nu     //显示行号

:set nonu    //打消显示行号

复制:

yy    //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。

nyy   //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。

yw    //复制从光标开始到词尾的字符。

nyw   //复制从光标开始的n个单词。

y^      //复制从光标到行首的内容。

y$      //复制从光标到行尾的内容。

p        //粘贴剪切板里的内容在光标后,假如利用了前面的自界说缓冲区,发起利用"ap 举办粘贴。

P        //粘贴剪切板里的内容在光标前,假如利用了前面的自界说缓冲区,发起利用"aP 举办粘贴。

替换:

:s/old/new      //用new替换行中首次呈现的old

:s/old/new/g         //用new替换行中所有的old

:n,m s/old/new/g     //用new替换从n到m行里所有的old

:%s/old/new/g      //用new替换当前文件里所有的old

编辑其他资源:

:e otherfilename    //编辑文件名为otherfilename的文件。

修改文件名目:

:set fileformat=unix   //将文件修改为unix名目,如win下面的文本文件在linux下会呈现^M。

客串谜底

c通报参数都是值通报的,指针的一个浸染是为了办理实现雷同引用的结果,别的,利用指针可以直接操纵内存!

孙鹤同学的表明:

#p#分页标题#e#

每个线程有牢靠巨细的栈,凡是主线程的栈默认一般是8M,用指针去引用内存,往往是在利用堆内存,栈是有限的,而且受保留期影响,所以用堆的环境要比用栈更多,有些对象保留期很长,高出一个函数的挪用,那么就需要用堆内存。

From:cnblogs 熬夜的虫子

    关键字:

在线提交作业