首页 > 系统相关 >Linux 使用技巧总结

Linux 使用技巧总结

时间:2023-03-19 21:23:22浏览次数:65  
标签:总结 set 技巧 exec ++ time vim Linux cpp

Linux 使用技巧总结

(noilinux or ubuntu 22.04)
结合高中时用 linux 的一些技巧,并加入一些大学以后用到的 linux 常识。

终端的基本命令

忘了就 -h--helpman

cd Desktop  
size filename  
sudo apt update
sudo apt-get install firefox
sudo apt install --only -upgrade firefox
#换源(清华源https://mirror.tuna.tsinghua.edu.cn)更快


cp filea fileb
cat filename
rm filename
mv filea fileb
mv file noi/
cp file noi/
diff filea fileb -w #ignore行末空格文末回车
vimdiff filea fileb

pkill gedit
pkill gedit -9

cpp相关

编译命令:g++ filename.cpp -O2 -Wall -Wl,--stack=112345678 -fsanitize=address -std=c++11 -fsanitize=undefined -ftrapv -g,其中-fsanitize=address检查内存泄漏,找到 #0 0x80488e2 这样的16进制数后 addr2line 0x80488e2 -e ./test 就能获取行号,ftrapv 检查爆int or longlong。注意不 -o filename 自动生成到 a.out
make b : 自动执行 g++ b.cpp -o b

nl a.cpp #display a.cpp, including number of lines
./c > outputfile
./c < inputfile
vimdiff a b
#对拍
mkdir checker
cd checker/
vim a.cpp
vim b.cpp
vim maker.cpp
vim checker.cpp
make a
make b
make maker
make checker
  • gdb 调试:
g++ a.cpp -o a -g
gdb a
b 6 #在第6行加断点
r #run
p a #print a
p a+b #print a+b
q #quit
  • 写 Makefile : vim Makefile
a : a.cpp
	g++ a.cpp -o a -Wall -std=c++11

( \(a\) 依赖于 a.cpp

以后就可以 make a 了。(如果没有 Makefile 默认 g++ a.cpp -o a

  • time

time ./a : 会显示 real ...s user ...s sys ...s,其中 real 是运行时间(不要标准输入)。
也可 \time -f "%U %M" ./test(-format "User time, Memory(KB)"),user time 不计IO等待时间。但可能需要安装 \time

  • 多命令行:Ctrl shift T 新建,Ctrl Pageup/Pagedown 切换
  • 开栈:ulimit -a 获取信息(stack size是栈大小,单位KB);ulimit -s 102400:开100MB的系统栈;help ulimit for help.
  • Language:有的 Linux 是可以敲中文的,按 shift 键即可。但是好像只有键盘左边的那个shift管用。

vim相关

oi wiki : Vim
或者直接在终端里敲打开 vimtutor 就有教学。

各种模式

默认普通模式,按 v 进入可视模式,按 i 进入插入模式。
: 会出现单行模式,相当于一个小型的命令行界面。

一些快捷键

普通模式下按 G (大写)跳至行末,然后按 v 进入可视模式,然后按 gg 跳至开头,就可以实现“全选”操作了。

vim中复制粘贴时缩进混乱的解决方法

首先把光标搞到最左上角,然后按Ctrl VG(大写),=,就好了。

.vimrc

方法:在 ~ 目录下建立一个 .vimrc 文件。可以直接在终端敲 vim .vimrc

set tabstop=2	//手敲 tab 两缩进
set shiftwidth=2	//自动缩进两缩进
set autoindent	//自动缩进
set cindent	//c风格自动缩进
set ruler	//右下角显示行数列数
set nu	//左边显示行号
nnoremap <F9> : call CompileRunGcc()<CR>	//(普通模式下)一键编译运行
func! CompileRunGcc()	//运行函数
  exec "w" 	//以下相当于在 vim 的普通模式下的“命令行”的输入
  exec '!g++ % -o %<'	// % 表示当前文件名,%<表示去除当前文件名后面的后缀名以后的名字
  exec '!time ./%<'//似乎单引号双引号都行,并且单引号可以少打一些 '\'
  endfunc
nnoremap <F12> : call Clr()<CR>	//(普通模式下)清空命令行
func! Clr()
  exec "!clear"
  endfunc

所有这些配置均可在普通模式下的“命令行”中直接输入,只会生效一次。

vim 小技巧

复制粘贴:在 vim 里面的复制粘贴直接用 y 和 p 就好,用法见上面的 vimtutor;如果想要复制粘贴到 vim 外面,可以手动用鼠标拖拽出想要复制的区域,Ctrl + shift + c。可能需要先Ctrl--,需要有一定的眼力;也可以 :!cat %,也可以 :!gedit %&

关于 vim 的分屏:如果直接用:sp a.cpp 的话,会分成上下两个屏幕,与平时习惯不符。使用 :vs a.cpp 可以方便地分成左右两个屏幕。

目前使用的 .vimrc

注意 time 那行要用单引号,否则需要敲更多的 \

set autoindent
set cindent
set mouse=a
set shiftwidth=2
set tabstop=2
set nu
set ruler
nmap<F9> : call Jzp() <CR>
func! Jzp() 
	exec "w"
	exec "!clear"
	exec "!g++ % -o %< -fsanitize=address -ftrapv -Wall -g"
	exec '!\time -f "time : \%U	memo : \%M" ./%<'
endfunc
nmap<F12> : call Zzz() <CR>
func! Zzz()
	exec "w"
	exec "!clear"
	exec '!g++ % -o %< -O2'
	exec '!\time -f "time : \%U memo : \%M" ./%<'
endfunc

(以下为20230213版本)

set tabstop=2
set shiftwidth=2
set autoindent
autocmd FileType cpp set cindent
set ruler
set nu
set mouse=a

autocmd FileType cpp nmap<F8> : !g++ % -o %<
autocmd FileType cpp nmap<F9> : call Compile_cpp() <CR>
func! Compile_cpp()
	exec "w"
	exec "!clear"
	exec "!g++ % -o %< -fsanitize=address -ftrapv -Wall -g"
endfunc
autocmd FileType cpp nmap<F12> : call Execute_cpp() <CR>
func! Execute_cpp()
	exec '!\time ./%<'
endfunc

autocmd FileType sh nmap<F9> : call Execute_sh() <CR>
func! Execute_sh()
	exec "w"
	exec "!clear"
	exec "!./%"
endfunc
nmap<F9> : !python3 %

标签:总结,set,技巧,exec,++,time,vim,Linux,cpp
From: https://www.cnblogs.com/JiaZP/p/17234340.html

相关文章

  • Linux
    1.理论知识1.1文件名后缀           1.1.1与文件类型无关1.1.2作用是说明和注释一个文件的性质1.2常见的压缩文件后缀后缀......
  • Linux下安装RabbitMQ
     1.文件上传将文件上传到/usr/local/rabbitmq目录下(如果没有rabbitmq文件夹,自己手动创建一个)mkdirrabbitmq2.安装文件(分别按照顺序安装)rpm-ivherlang-21.3-1.el7......
  • 每日总结2023/3/19
    今日对页面的布局和背景进行了优化,代码行数大概30行。明日准备验收:   ......
  • Linux fcntl函数详解
    功能描述:根据文件描述词来操作文件的特性。文件控制函数         fcntl--filecontrol头文件#include<unistd.h>#include<fcntl.h>函数原型intfcn......
  • 结构体总结
    在之前我们已经学过了,结构体类型的创建,初始化,和结构体的传参。那么下面我们就来学习一下1.结构体的特殊声明2.结构体的自引用3.结构体变量的定义和初始化4.结构体的内存对齐......
  • 3.19每日总结
     今天学习了1h。数据库操作类新建一个类"UserDBHelper",这个类extendsSQLiteOpenHelperpublicclassUserDBHelperextendsSQLiteOpenHelper{}定义类内的成员变量p......
  • Linux(centos)接口代理策略
    Linux(centos)接口代理策略前言目的:实现一个接口转发,代理访问qiang内不能访问的接口。实现方式:直接使用go的第三方ssr包;(有报错,可能是版本不对,未实现)Linux直接安装ssr......
  • c++11新特性总结
    C++11新增加特性1.=default,delete=default如果我们没有定义构造函数,C++编译器会自动为我们创建一个默认构造函数。但是如果我们定义了一个构造函数,那么编译器就不会为......
  • ChatGPT背后的算法——RLHF总结
    ChatGPT背后的算法——RLHF总结参考链接:抱抱脸:ChatGPT背后的算法——RLHF|附12篇RLHF必刷论文(qq.com)背景 (文本生成的语言模型评价不在训练中)chatGPT训练4步骤......
  • linux理论知识 理论知识1.1文件后缀
    1.作用是说明和注释一个文件的性质2与文件类型无关1.2常见的压缩文件后缀名1.gz   2.bz2  3.xz  4zip  5.far  6.tar.gz  7.tar.bz2、2.归档和......