Linux C++ 开发常用工具,常用指令工作手册

vim常用:
:set nu显示行数  :set mouse=a 鼠标滑动屏幕,:set ic :set noic 忽略不忽略大小写 /word_to_search\c \c表示忽略大小写 c小写忽略,C大写不忽略
比较两个文件不同:
vim -d file1 file2; 然后使用“[c”跳转到前一个不同点,使用“]c”跳转到后一个不同点,可以使用Ctrl+w之后,左右上下进行替换。
如果已经打开了文件file1的情况下,可以在file1中输入:vert diffsplit file2,如果没有用vert命令,diffsplit则会分上下两个窗口。
跳转到上次修改的位置:g;
G文件结尾,gg文件开头
跳转到局部变量的定义处:gD
打标签,调到指定的标签出:ma 然后`a跳转到打好的标签a处,a可以是a-z。

vim和命令执行交互:
打开VIM下直接执行命令:在vim界面输入”:!ls“
把当前命令的执行结果读入VIM中":read !ls""
把当前VIM文件中的内容转换为命令输出到命令行:":write !sh" 后者":write !cmd"

查找/word,通常的查找,或者/\<word\> 字母全匹配查找,可能不分大小写,除非设定了。 然后n向下,N向上 或者esc 按#号查看光标所在的单词
:up 或者 :update 与 :w 类似,但仅在文件有改动才会保存 :q!取消保存
Ctrl+n,Ctrl+p补全查找 

复制黏贴 Nyy,或者Ndd,然后按p,光标之前用大写(光标后面的N行复制或者剪切)
多行的时候,在某个位置输入ma(打标签),在两位一个位置输入y‘a,或者d‘a,然后在任意位置输入p即可
I:在当前行首插入,A:在当前行尾插入,o当前行下面插入一行,O:在当前行上面插入一个新行
y"+ 从一个文件复制到两外一个文件复制后加上"+,黏贴前加上"+即可, "+p 

VIM下C-v:
= 自动格式化代码  yy拷贝,dd剪切,yw拷贝光标后单词,或者选定后拷贝;zf,zo折叠打开,
I+注释符号+按两次Esc,注释代码,取消先Ctrl+v,选中,按d; a光标的下一个输入, %定位到{对应的位置}

移动光标,按zz,会获得光标置中,结合hjkl左右上下,大写ZZ保存并退出
Ctrl+f/+b 前后一屏幕翻动浏览
Ctrl+d/+u 前后半屏幕翻动浏览, H,M,L光标移动 —光标移到行首,n$光标移到n行尾,_光标移到行首,
Ctrl+g 显示当前的文件名

在Esc下r替换,x删除;dnw:删除n个单词,需将光标移到单词的第一个字母上,按dnw,如果光标在单词任意位置,用daw,d$;
dnl:向右删除n个字母;dnh:向左删除n个字母;dnj:向下删除n行;dnk:向上删除n行
替换:.,$s/orichar/newchar/g 字符全部替换       :,+5s/orichar/newchar 替换光标处以下五行的字符

在Esc下,按u撤销上一次编辑,按Ctrl+r 回退前一个命令;>整行右移,<整行左移;
Esc,shift+*,向下整词查找。shift+#向后整词查找

:noh不高亮
:tabnew filename,gt 互相之间切换;:tabs 显示已打开标签页,:tabn :tabp上一个下一个标签;:tabc关闭

tmux:Ctrl+B启动
[ 划动鼠标浏览
Alt+方向键    调整面板大小
Alt+F12全屏显示
C  新建一个窗口;n 切换到某个窗口,x关闭当前窗口
"上下分割,%左右分割,方向键切换到某个分割
:进入命令模式
Ctrl+b 然后d,进入detach状态,下次进入可以tmux attach 进入上次tmux的编辑界面

GDB调试:
makefile 中添加-g;gdb exefile;
set args XX XXX; run; start; c n s; finish调试时退出函数调用;
set var sum=0 可以中途改变变量的值继续运行
b filename:line or funcName; disable/enable breakpoint 1; clean number;delete breakpoints;
backtrace or bt, f fnum查看某贞,函数调用情况,可结合info一起查看局部变量的值;
print var/ ‘f1.cpp‘::var/ function::var; list lineNum or funcName; info break/watchpoints/locals(查看函数局部变量的值);
display/undisplay varName; watch name/expr; show:用来获取GDB本身设置相关的一些信息

Ctags:
ctags -R 或者ctags -R * 或者ctags *.c等
vim -t 要查找的结构体名或数据类型名或函数名或系统定义的宏名;可以直接跳转到定义处,前提是打了tag,并且在tag文件的目录下
vim  filename 在有ctag文件目录下打开file(如果不在tags目录下,则可以使用:set tags=tags_path;指定tags目录,
如果有多个tags目录,可以使用","隔开),同样可以使用ctags特性
vim -t main 使用生产tags之后,直接使用打开main函数所在文件,光标指到对应的函数名那一行;
Ctrl+] ;跳转到光标tag的定义处 Ctrl+t/Ctrl+o 可以跳回
:tags;查看跳了哪些tag,然后可以使用 :3tag 向前跳指定的3个步长  或者Ctrl+t也可以加前缀,指定返回跳转步长
:stag tagname ;分割窗口,并调到tagname处,一般使用tags先查看,然后使用分割split,使用Ctrl+w实现跳转
:[count]tprevious  跳到前count个 如果打开多个重定义的时候,会用。 :[count]tnext 跳到后count个,:tselect tagname 选择某个

Taglist:
:Tlist显示或关闭,Ctrl+w来回切换,光标在某个位置处,输入enter,定位到当前的字符处

OmniCppComplete:
类,结构,指针,属性方法提示和补齐

tree:
tree -L N 查看N级别的目录结构,可以>struc.txt输出到文件方便查看
Eclipse:
Ctl+shift+f 格式化代码 Ctl+/ 注释代码

valgrind:
valgrind --track-fds=yes --leak-check=full --undef-value-errors=yes ./a.out

NotePad:
Alt+0 折叠全部 +shift打开
git
git add .
git commit -m "aaaa"
git push
git diff HEAD 显示与仓库之间的差异
git branch newBranchName 创建一个新的分支
git checkout newBranchName 切换到新的分支
git log 使用查看历史版本,然后结合以下操作,可以会退到指定的版本
$ git reset --hard HEAD^ 回退到上一个版本,HEAD是当前版本,如果到上上一个版本,用两个^^,或者直接写2
或者git reset --hard commitID,表示回退到commitID,即当前的Head为commitID

git branch -a 查看远程分支
git push origin --delete branchName 删除远程分支
git branch -m old new 重命名本地分支
重命名远程分支:先删除远程分支,然后重命名本地分支,再重新提交一个远程分支
冲突:git checkout mastername; git pull;然后切换到本地分支,git merge mastername,有冲突会提示,然后进入修改
如果修改了,没有git add 直接退回到修改的前的原始状态,可以使用"git checkout <file>"
保持和远程分支一致,一般可以git pull origin remoteName
git add .出错之后,可以使用git rm --cached <file> 删除添加到cash区的提交
$ git submodule add https://github.com/subexample 子项目添加
$ git clone --recursive https://github.com/oriexample  有子项目情况下克隆父项目

其他
Alt+F4关闭当前窗口 Win+D退出到桌面,所有最小化,Alt+空格+n最小化当前窗口

Linux:
环境变量设置:
加入:export PATH=$PATH:/opt/au1200_rm/build_tools/bin;查看是否成功:输入export; 或者echo $PATH 查看当前环境变量情况
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../your_project/lib
修改profile:vim /etc/profile(系统级别)或者.bashrc(仅会对当前用户有效), 然后加入export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
source ./etc/profile 生效
导入库路径:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/sdb/libs

cat filename查看文件内容; grep "关键字" -r 搜索目录 查看关键字位置;
find / -name keyword 或者locate /etc/sh 一般查文件位置目录etc下的sh开头的文件  加-type d 表示查找对应的文件夹
^匹配行首,*匹配任意字符,$匹配行尾;例如^a**b$ 查找a开头b结尾的字符。 find . -name "Alignment_*" 在当前目录下,查找文件夹
df -hl 查看磁盘空间剩余信息; du -sh [目录] 查看当前目录占空间大小;
du [--max-depth=1] -h [路径或者文件] 详细显示文件目录里面的文件空间大小;
r=4,w=2,x=1,所以rw-r--r--用数字表示为644
chmod -R 777 ./file 修改文件权限  644

objdump -t nets.o |grep -i gettensor

压缩解压:
# tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思
#zip -r myfile.zip ./*  将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件
unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/
-o:不提示的情况下覆盖文件;
-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下
#zip -d myfile.zip smart.txt  删除压缩文件中smart.txt文件
#zip -m myfile.zip ./rpm_info.txt 向压缩文件中myfile.zip中添加rpm_info.txt文件

在屏幕打印,并且输出到文件 ./run |tee log.txt 可以加参数-a,附加到文件,而不是覆盖。
>>, >&,
>!  将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖
make 2>&1 | tee log.txt  其中0 stdin,1 stdout,2 stderr &1是指无论标准输出在哪里
make VERBOSE=1 显示编译细节

nvidia-smi -l 5 显示运行的cuda信息
export CUDA_VISIBLE_DEVICES=0
echo $LD_LIBRARY_PATH

Protobuf:根据proto生成对应的cc和h文件
protoc caffe.proto --cpp_out=.

查看CPU信息
vim /proc/cpuinfo
时间: 2024-10-10 16:01:21

Linux C++ 开发常用工具,常用指令工作手册的相关文章

mysql 性能优化常用工具

mysql 性能优化常用工具: 常用性能检测工具 show engine innodb  status show full processlist information_schema.processlist explain create table innodb_table_monitor(a int) engine=innodb; innodb_locks innodb_lock_wait innodb_trx zabbix监控 pt-tools 工具 性能优化的两种方式: 1.执行计划的解

Linux后台开发常用工具

https://files-cdn.cnblogs.com/files/aquester/Linux后台开发常用工具.pdf 目录 目录 1 1. 前言 3 2. 脚本类工具 3 2.1. sed命令-字符串文本操作 3 2.2. sed和awk使用外部变量 4 2.3. awk给外部变量赋值 4 3. 设备类工具 5 3.1. 查看网卡型号 5 3.2. dmidecode查看所有硬件信息工具 5 3.3. lscpu查看cpu工具 5 3.4. lspci查看主板工具 5 3.5. lssc

黑马程序员--苹果电脑以及开发工具xcode的快捷键与常用的UNIX指令-我之记录

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 快捷键让我们看起来更专业 xcode 快捷键 1.  Esc 自动完成, 貌似Command + . 也可以 2.  Command + / 注释/取消注释,单行注释 3.  Control + Command + ↑↓ (上下箭头)快速

学习VC MFC开发必须了解的常用宏和指令

1.#include指令  包含指定的文件 2.#define指令   预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些"表面似和善.背后一长串"的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3.#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间. 4.#ifndef   #else   #endif指令  条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容

二十八、Linux下Vim工具常用命令

在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚接触,本节将我日常使用或收集的Vim常用命令记录下来. 当然,直接在命令行上输入:vimtutor,就可以学习到Vim的所有命令了.Vim很强大,很多牛人在vim里集成很多插件什么的,但这里只介绍基本vim命令 移动命令 h "左 j "下 k "上 l "右 w "光标移动到下一个单词的首字符 a word forward b "光标移动到上一个单词的首

学习VC MFC开发必须了解的常用宏和指令(转)————复习一下

1.#include指令  包含指定的文件 2.#define指令   预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3.#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间. 4.#ifndef   #else   #endif指令  条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一

Windows开发中一些常用的辅助工具

经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具. (1) Spy++ 相信windows开发中应该没人不知道这个工具, 我们常用这个工具查看窗口层次,跟踪窗口消息. (2) WinSpy 一个窗口相关的小工具,非常有用,可以帮我们快速查看和修改窗口属性.(这个工具是开源的, 拿来学习挺不错的) (3) Process Explorer 非常有用的工具,类似任务管理器,但是比任务管理器强大的多. 可以让我们查看查看每个进程的详细信

linux 常用的操作指令

linux常用的基本指令: 0. 背景知识: 计算机:接受用户的指令与数据,经过中央处理器的数据与逻辑单 元运算处理后,以产生或存储成有用的信息. 广义上讲:我们周边有好多宽泛概念上的计算机,如加减乘除计算 机,手机, GPS, ATM等等. 计算机五大单元: 输入单元:包括键盘,鼠标,扫描仪,手写板等. 中央处理器( CPU):含有算术逻辑,控制,记忆等单元. 输出单元:显示器,打印机. 注意: 这里存储器指内存 CPU读取的数据都是从内存中来的, CPU处理完成的数据,必须要先 写回内存,,

linux系统监控常用工具

linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h  显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 uname -srvmo 二.系统进程工具包(procps) 1./bin/ps 显示系统进程 ps -ef      ps aux 2./usr/bin/pgrep 过滤显示系统进程 3./usr/bin/free 显示系统内存的使用 4./usr/bin/vmstat 报告虚拟内存的统计信息 5.