C++ advance(四)Linux 命令基础 --2.vim 和 gcc 和 library

一、vim

1.vim 简介

vi 是 “visual interface” 的简称。
vim 更高级一些,可以理解是 vi 的高级版本。
vim 需要自行安装,在 shell 中输入 vimtutor 命令可以查看相关的帮助文档。

2.vim 三种模式

3. 命令模式

移动光标

H 左 L 右 J 上 K 下
0 移动到行首
shift+4 ($) 移动到行尾
gg 移动到文件首部
GG 移动到文件尾部
nG 移动到文件第 n 行

删除操作

x 删除光标所在字符
X 删除光标前的字符
dw 删除单词(从光标开始删)
d0 删除行首到光标前的内容
d$ 删除行尾到光标的内容 (D)
dd 删除光标所在一整行
ndd 删除光标所在行开始 n 行

撤销动作

u 撤销动作
ctrl+r 反撤销

复制黏贴

yy 复制一行
p 将剪贴板内容黏贴到光标所在行的下一行
P 将剪贴板内容黏贴到光标所在行
r 替换光标所在字符为 r 之后输入的字符

可视模式

v 进入可视模式,移动光标到目的地
y 复制
d 删除 (剪切)
p 黏贴 光标位置直接黏贴
P 黏贴 光标之前位置直接黏贴

查找操作

/string 从文件顶部查找文件内所有的 string
?string 从文件底部查找文件内所有的 string
将光标移到要查找的字符串上后按 #,查找文件内所有该字符串
n/N 进行遍历(如果是从头开始查找,n 就是向后)

格式化操作

>> 光标所在行右移一个 tab
<< 光标所在行左移一个 tab
n>> 光标开始 n 行右移一个 tab
n<< 光标开始 n 行左移一个 tab
gg=G 文件整体调整格式

查看 man

光标移动到函数位置,按 K 切换到 man 帮助页,按 nK 可以到 man page 的第 n 页查看该函数

4. 切换到编辑模式 a/i/o/s

i 光标前插入
a 光标后插入
l 行首插入
A 行尾插入
o 当前光标下一行开始编辑
O 当前光标上一行开始编辑
s 删除当前光标内容
S 删除当前行

5. 切换到末行模式 “:”

执行命令

!ls -l

查找替换

:s/src/des 只替换改行第一个 src 为 des
:s/src/des/g 替换该行全部 src 为 des
:% s/src/des 替换文件内所有行第一个 src 为 des
:% s/src/des/g 替换文件内所有 src 为 des

保存退出

:w 保存
:wq 保存后退出
:q 退出,只有文件没有变化才能退出
:q! 强制退出不保存
:x 相当于 wq
ZZ 命令模式下的保存退出

vi 分屏

横分 :sp filename
竖分 :vsp filename
退出
:q 退出一个文件
:qall 全部文件都退出
:wqall 全部保存退出

!command 末行模式下执行 shell 命令

注释

如果非正常关闭了文件。再次打开的时候会提示 E325: 注意发现交换文件 “filename.swp”
(1) 另一个程序可能也在编辑同一个文件。
如果是这样,修改时请注意避免同一个文件产生两个不同的版本。
退出,或小心地继续。
(2) 文件非正常关闭
在用 vim 打开一个文件时,其会产生一个 cmd.swap 文件,用于保存数据,当文件非正常关闭时,可用此文件来恢复,当正常关闭时,此文件会被删除,非正常关闭时,不会被删除,所以提示存在.swap 文件。

1
2
vim -r .filename.swp// 恢复文件
rm -f .filename.swp// 删除交换文件

C++ advance 文章总览

C++ advance(四)Linux 命令基础 —1.Linux 常用命令
C++ advance(四)Linux 命令基础 —2.vim 和 gcc 和 library
C++ advance(四)Linux 命令基础 —3.makefile 和 gdb 和 IO
C++ advance(四)Linux 命令基础 —4.stat 和 readdir 和 dup2
C++ advance(五)Linux 进程和线程 —1. 进程控制
C++ advance(五)Linux 进程和线程 —2. 进程间通信
C++ advance(五)Linux 进程和线程 —3. 信号
C++ advance(五)Linux 进程和线程 —4. 进程和线程
C++ advance(五)Linux 进程和线程 —5. 线程同步
C++ advance(六)Linux 高并发网络编程开发 —1. 网络编程基础 socket
C++ advance(六)Linux 高并发网络编程开发 —2.tcp 三次握手 - 并发
C++ advance(六)Linux 高并发网络编程开发 —3.tcp 状态转换 - selcet poll
C++ advance(六)Linux 高并发网络编程开发 —4.epoll udp
C++ advance(六)Linux 高并发网络编程开发 —5. 广播 - 组播 - 本地套接字
C++ advance(六)Linux 高并发网络编程开发 —6.libevent
C++ advance(六)Linux 高并发网络编程开发 —7.xml json
C++ advance(七)Linux 高并发 web 服务器开发 —1.
C++ advance(七)Linux 高并发 web 服务器开发 —2.
C++ advance(七)Linux 高并发 web 服务器开发 —3.