1、使用 ctrl+alt+t 打开命令行
2、按tab键补全文件名
3、ctrl+c 停止正在进行的过程
4、向上键向下键翻历史的命令(只有在当前用户才有效,比如切换根用户之后就无了)
5、根用户创建的文件 其他用户只有查看内容的权限,不能修改
6、具体命令:Linux vi/vim 使用
1、文件、目录和压缩
1.1 目录操作
c
$ ls //查看里面有什么东西(浏览目录内容) 默认开始进入主目录
$ tree // 查看当前目录(直接出树状结构)(安装命令(软件) sudo apt-get install tree,sudo表示要用根用户(当前普通用户))
$ tree -L 2 //查看当前的前两层目录树
$ tree /home //查看home目录下的子目录树
$ cd / //切换到系统根目录(/) cd (change directory)
$ cd ~ //切换到当前用户目录
$ pwd //查看当前路径
$ cd .. //切换到上一层目录(两个点 )
$ mkdir hello //创建目录(文件夹)
$ rm -rf hello/ //删除目录(文件夹hello)
$ cd hello //切换到当前目录下的hello子目录
$ ln -s /mnt/hgfs ./ //在主目录建立软链接(类似快捷方式,避免每次输入一大堆)
1.2 文件操作
c
$ touch main.c //创建文件
$ mv main.c hello.c //更改文件名(改成hello.c)
$ gedit main.c //用图形编辑器编辑
$ vi main.c //编辑文件,要编辑要敲i进入编辑模式,按esc退出编辑模式,:wq退出
$ gedit main.c // 以图形化方式 编辑文件
$ cat main.c //查看文件内容
$ cp main.c aa //拷贝文件(把main.c拷贝,新文件叫aa)
$ rm main.c //删除文件(后面跟的名字默认是 文件)
1.3 压缩解压
c
$ tar -zcvf music.tar.gz music/ //压缩(很多源码是tar.xz格式)
$ tar -xvf music.tar.gz //解压
2、系统操作
2.1 权限设置
c
$ sudo su //切换到root用户(比如要在根目录下操作)
$ su ivan //切换回普通的ivan用户
$ chmod 777 main.c //设置权限为777(即所有(所有用户可改),777是最高的),只有根用户有这个权限可以改权限(使用chmod)
$ passwd //修改当前用户的密码(会有输入更长密码的限制)
$ sudo passwd yhai //用root用户权限去修改 yhai用户的密码,就没有限制了,可以设为1
2.2 安装新命令
c
$ sudo apt-get install tree //安装命令
$ sudo apt-get remove tree //卸载命令
2.3 搜索
c
$ find . -name hello.c //在当前目录(.)下搜索文件(hello.c)
$ man find // 查看find的手册
2.4 磁盘空间
c
$ df -h //查看各磁盘空间(一般以dev开始的)使用情况
$ du -h music/ //查看music文件夹占多大空间
3、vi命令
嵌入式御用编辑器,有三种模式:命令模式,输入模式,底行模式
通过命令终端(串口、网线)远程访问某个设备
3.1 命令模式(默认启动时进入)
此状态下敲击键盘动作会被Vim 识别为命令,而非输入字符
c
//3个都可以切换到输入模式
i //进入插入状态(按下i ,并不会输入一个字符,而被当作一个命令insert)
//再输入字符,会插入在光标前
enter // 光标在前把当前行下移一行,在后在当前行下面新建一行光标移至新的行
a //进入追加状态(再输入字符,会追加在光标后),光标会移至当前位置之后(如果要在后面加一空白行,需要用a把光标移至最后一个字符之后)
o //进入新一行输入状态(再输入字符,会在新一行输入)
注意先按esc退出输入模式,回到命令模式
c
//移动光标
k 上
h 前 l 后
j 下
r //取代光标处的字符
x //删除当前光标所在处的字符
ctrl + f //下翻页
ctrl + b //上翻页
gg //跳到第一行
shift + g //跳到最后一行
dd //删除一整行
//3dd: 删除3行(6yy以此类推)
yy //复制一行
v + h/j/k/l //选取字符串,进行整体操作(同时按)
d // 删除选中的东西
y //复制
p //粘贴
u //复原前一个动作
//再输入 Ctrl+r : 回退到修改前状态j
: //切换到底行模式(即可在最底一行输入命令)
3.2 输入模式
enter, tab, 空格 都是正常的
3.3 底行模式
先进入命令状态,都是以冒号开始,实际上也是命令模式
c
:w //写入(保存)
:q //退出
:q! //不保存退出
:set nu //显示行号
:set nu! //隐藏行号
:30 //光标跳到第30行
/word //搜索字符串 word
// n: 查找下一个 shift + n: 查找上一个
Backspace //取消底行字符后,自动切换到命令模式
4、源码跟踪(vim、ctags、cscope)
vim:是vi的升级版,加了一些高亮显示和改进,如u可以无限撤销。
ctags cscope:帮助多个源文件间建立符号索引库(如跳到函数定义,查找函数的文件位置)
4.1 安装 vim,ctags,cscope
c
$ sudo apt-get install vim universal-ctags cscope
$ cd ~/linux-4.9.140 //进入源码目录
$ ctags -R //生成符号关联
$ cscope -Rbkq //生成索引库
4.2 编译文件
c
$ vi Makefile
$ vim .
4.3 vim配置
c
$ vim ~/.vimrc // 添加vim 的配置文件
可以个性化定制
"-------------------------------------------------------------------------------
" 基本设置
"-------------------------------------------------------------------------------
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif
"启用Vim的特性,而不是Vi的(必须放到配置的最前边)
set nocompatible
" 设置编码
set encoding=utf-8
set fenc=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb2312,gb18030,big5
"显示行号
set number
"设置默认打开窗口大小
"set lines=70 columns=100
"设置窗口透明度
"set transparency=10
"设置背景色
"set bg=dark
"用 koehler 调色板
colorscheme koehler
"隐藏工具栏和滑动条
set guioptions=aAce
"设置标签栏
"最多30个标签
set tabpagemax=30
"显示标签栏
set showtabline=2
"设定文件浏览器目录为当前目录
"set bsdir=buffer
"set autochdir
"保存100条命令历史记录
set history=100
"总是在窗口右下角显示光标的位置
set ruler
"在Vim窗口右下角显示未完成的命令
set showcmd
" 启用鼠标
if has('mouse')
set mouse=a
endif
"设置语法高亮
if &t_Co > 2 || has("gui_running")
syntax on
endif
"-------------------------------------------------------------------------------
" 文本操作设置
"-------------------------------------------------------------------------------
"设置字体
set gfn=Courier:h15
"设置自动缩进
"设置智能缩进
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set smarttab
"设置Tab键跟行尾符显示出来
set list lcs=tab:>-,trail:-
"设置自动换行
set wrap
"设置Insert模式和Normal模式下Left和Right箭头键左右移动可以超出当前行
set whichwrap=b,s,<,>,[,]
"设置光标移动到屏幕之外时,自动向右滚动10个字符
set sidescroll=10
"设置使~命令成为操作符命令,从而使~命令可以跟光标移动命令组合使用
set tildeop
"在Insert模式下,设置Backspace键如何删除光标前边的字符。这里三个值分别表示空白字符,分行符和插入模式之前的字符。
set backspace=indent,eol,start
"定义键映射,不使用Q命令启动Ex模式,令Q命令完成gq命令的功能---即文本格式化。
map Q gq
" CTRL-U 在Insert模式下可以删除当前光标所在行所在列之前的所有字符. Insert模式下,在Enter换行之后,可以立即使用CTRL-U命令删除换行符。
inoremap <C-U> <C-G>u<C-U>
"使 "p" 命令在Visual模式下用拷贝的字符覆盖被选中的字符。
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
"-------------------------------------------------------------------------------
" 搜索设置
"-------------------------------------------------------------------------------
"打开搜索高亮
set hlsearch
"忽略大小写
set ignorecase
"在查找时输入字符过程中就高亮显示匹配点。然后回车跳到该匹配点。
set incsearch
"设置查找到文件尾部后折返开头或查找到开头后折返尾部。
set wrapscan
"put ctrl+shift+- s for find string
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"auto add cscope.out to vim 如:cs f s 命令不能用
cs add cscope.out
set csto:0
set cscopetag
set nocsverb
set csverb
"添加内核目录,让你在任意文件下搜索时,都能跳到内核信息
"cs add /home/jetbot/kernel/cscope.out /home/jetbot/kernel/
"set tags:./tags,tags,/home/jetbot/kernel/tags
"-------------------------------------------------------------------------------
" 文件设置
"-------------------------------------------------------------------------------
"设置当Vim覆盖一个文件的时候保持一个备份文件,但vms除外(vms会自动备份。备份文件的名称是在原来的文件名上加上 "~" 字符
if has("vms")
set nobackup
else
set backup
endif
"Enter换行时总是使用与前一行的缩进等自动缩进。
set autoindent
"设置智能缩进
set smartindent
"编辑一个文件时,你所编辑的内容没保存的情况下,可以把现在的文件内容与编辑之前的文件内容进行对比,不同的内容将高亮显示
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
4.4 常用命令
进入目录 enter,使用之前介绍的 /word搜索
c
Ctrl + ] //调到定义处
Ctrl + o //返回上一次位置
//Ctrl + i 再返回(ctrl+o 回到上一级(哪都能用) ctrl+i 再回来)
g f //跳到光标停留的include的头文件里
d w //删除个字符串
u //可无限撤销
:cs f f driver.c //搜索 driver.c 文件
g d //选中当前光标处的字符串
//再 n 查找下一个
ctrl + shift + - 再按 s //全局(整个源码里面,不是当前文件)查找光标处的字符串
// j:下一条 k:上一条 f:下一页 b:上一页 shift+g: 到末尾
:cs f s attach //全局 搜索字符串 attach
Ctrl+w v // 垂直分割窗口
// Ctrl+w w 可在窗口间切换
ctrl + 变大字体
:e . //编辑当前目录,回到目录
shift+g+数字 // 跳到对应数字行的文件并进去
:90 // 在文件中直接跳到90行
g+d // 同时按,且选中字符串,再敲n就可以跳了(当前文件中找)
v选择 用j光标往下搜