1. VIM配置文件及插件见百度网盘Linux相关目录。
2. :set mouse=n 设置鼠标,可以支持滚轮,对我来说较为合适
3. 单词上输入gd可以高亮显示与之相同的单词
4. gg跳至文件的第一行,G跳至文件的最后一行,跳至指定的行号直接输入:num,或者ngg
5. VIM实现跳转至函数声明处:
首先要安装了ctags,在程序的根目录下运行ctags -R,生成tags文件,然后在编辑程序时按Ctrl+]就会跳转到当前光标所在东西的定义处。若有多个tag,执行:ts,进行选择。按Ctrl+o即可跳回。不过,当修改过代码后,需要重新生成tags。
除了ctags,还有cscope,使用cscope -Rkbq,具体用法百度。
6.Putty登录Linux服务器后,vim不支持小键盘
Terminal->Features里,找到Disable application keypad mode,选上就可以。
7.* #分别是向前向后跳转到光标选中的单词
8.分屏功能:
sp filename—>上下分窗口
vsp filename—>左右分窗口
ctrl+w—>在不同窗口见切换
按v后按方向键可以多选;
按y复制,p粘贴
9.前台&后台任务
ctrl+z将一个Vim打开的文件放置后台
jobs查看后台任务;
fg num 把后台第num个任务调至前台运行;实际开发中较为快捷;
10.diff命令结果怎么看?
diff A B
0a1,2 ——表示左边文件0行处,相对于右边文件1,2处有变化 a表示addition,有增加,下面是两个">空行"
>
>
23a26 ——表示右边文件比左边文件多了aasdqwe内容
> asdqawe
953c956
<
---
>
0a1,2
>
>
24,25c26
< #include <termios.h> ——左边文件比右边文件多的内容
< #include <fcntl.h>
---
> asdqawe
953c954
<
---
>
diff A B -y ——两文件会并排输出,不同之处会标示出来
diff A B -u ——统一格式输出
diff -f A B ——会列出A要想和B相同,需要改变的内容。a表示增加,b表示删除,c表示更改。
# ls -l > txt1
# ls -l > txt2
# diff -f txt1 txt2
c1
总用量 60
.
c12 //表示txt的第12行改为下面两行的内容即可与txt2的内容相同 记住-f选项
-rw-rw-r--. 1 lvy lvy 693 1月 2 09:35 txt1
-rw-rw-r--. 1 lvy lvy 0 1月 2 09:35 txt2
.
其他:
<指左边文件+指的是有增加内容
>指右边文件-指的是有减少内容
创建补丁:diff txt1 txt2 > txt1.patch 很简单是吧
打补丁: 使用patch命令 后面也有说到
实例:
diff txt1 txt2 > txt1.patch
patch ./txt1 < txt1.patch
这样txt1与txt2的内容就一致了。
11.find、grep命令
find . -name "xxx"
grep -nr "xxx" /root /home --include=*.c
12.nfs+mount命令
mount命令简介:-a表示按照/etc/fstab文件的内容挂载相关设备
-t表示挂载指定的文件系统类型。如vfat、NFS、ext2、ext3、iso9600等
-l列出当前所有已经挂载的设备
nfs+mount 除了可以挂载NFS文件系统外,可以用来获取服务器目录的操作权限;
第一步:查看服务器上nfs的配置,如/etc/exports文件,将你要共享文件夹写上;
如/home/lvy/rootfs *(rw,sync,no_root_squash,no_all_squash)
第二步:开发板中使用mount -t nfs -o tcp,nolock 192.168.0.150:/home/lvy/rootfs /tmp
这样开发板的/tmp目录下就有了/home/lvy/rootfs的所有内容;
第三步:做你想做的事了;
注意:umount /tmp 用来卸载之前挂载的目录
13.basename命令
用来得到不包含全路径下的文件名;
例:
basename ./misc/test_led/ledTest.h ——输出ledTest.h
basename ./misc/test_led/ledTest.h .h—输出ledTest
与Makefile中basename不同:$(basename ~/work/main.c)—>得到的是每一个全路径文件名除后缀外一切字符
14.vim中选中一个单词,选中一行,复制,粘贴
1.光标放在单词开头,按v,按e,按y复制,按c剪切,按p粘贴
2.光标放在单词任意位置,按viw,按y,按p粘贴
3.按大写V,即可选中一行,对其进行相应的操作
4.按ctrl+v进入可视化块的选择;
1.光标移动到aaa的开头,按 v 按e 按y
2.光标移动到bbb的开头,按 v 按e 按p
也就说,快速选中一个单词,按v按e即可。
15.&&与||的区别(要深刻理解)
&&前面的命令执行成功,后面的命令才会执行
||前面的命令执行失败,后面的命令才会执行
ls -l && echo "Fuck"
ls -l || echo "Fuck"
16.tr命令
tr命令可以对来自标准输入的字符进行替换、删除以及压缩。如将大写转换成小写,可以使用:
echo“ABC” | tr ‘A-Z’ ‘a-z’——得到abc
echo "Hello" | tr "[:lower:]" "[:upper:]"——得到HELLO
17. patch打补丁
patch -p1 < ../xxxpatch文件 //p1代表需要忽略的目录数,第一个斜杠/前面的目录被忽略
18.windows中的文件传到Linux中,文件结尾出现^M这类字符
解决方法:dos2unix filename 或 sed -e 's/^M/\n/g'filename
还有其他方法:参考 http://www.bitscn.com/os/linux/201409/316490.html
19.sed命令——详见另一篇文章,记录shell编程的
执行ifconfig eth2得:
eth2 Link encap:Ethernet HWaddr 00:50:56:A1:18:98
inet addr:192.168.0.150 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fea1:1898/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:165948117 errors:0 dropped:0 overruns:0 frame:0
TX packets:218753464 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3908811940 (3.6 GiB) TX bytes:2990234769 (2.7 GiB)
想得到其中的 MTU:1500 Metric
ifconfig eth2 | grep UP | sed -e 's/.*\(MTU:1500\)/\1/; s/.1$//' ——需要深刻理解,-e表示多重编辑 .表示1个 *0个或多个 ?表示0个或1个 还有标签 引用的使用
20.括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.