20170721上课笔记
vi 和emacs 编辑命令
vi打开文件后,摁a将在光标后进入编辑模式,i则是光标前进入编辑模式,o则是另开新一行
esc推出 若想撤销操作。首先esc退出到命令模式,摁字母u,可退回操作。也可以退出到命令模式,摁:w!
vi分命令模式 编辑模式 行编辑模式 摁:进入行编辑模式,A I O进入编辑模式
rpm -ivh 常用命令 带进度条安装
rpm -Uvh 常用命令 若已安装旧版,则删除安装新版 若无安装旧版本,则直接安装
若路径中带空格 则“”将路径引起来
yum安装baseurl例:
【Server】
name=Server
baseurl=file:///media/"OLE6.4 x86_64 dISC 1 20130225"/Server
ZZ 保存退出
:wq 保存退出
:w 保存但不退出
:q! 不保存, 并强制退出
:w! 覆盖当前文件
:w newfile 另存为新文件
三 shell和unix命令
:sh ctrl+d 进入和退出shell
ctrl+z fg 将vi放入后台
:!command 不退出vi, 执行unix命令
:行号范围!command :.,.+100!sort 100行排序
四 模式切换
i(I) 进入插入模式,在光标前(光标所在行的行首)输入
a(A) 进入插入模式,在光标后(光标所在行的行尾)输入
o(O) 进入插入模式,在光标下一行(上一行)输入
ESC 进入命令模式
: 进入行编辑模式
r(R) 命令模式下替换光标下的单个(多个)字符(不切换模式)
五 光标移动
Home 移动到行首 或者 shift+6
End 移动到行尾 或者 shift + 4
Page Up, Page Down 整页移动
G 移动到最后一行(文件尾)
nG 移动光标到第n行
gg 移动到第一行
:set nu 设置行号
六 命令模式下文本编辑
--------------------------------------------------------------------------------|
单位 | 删除 | 复制 | 粘贴 |
--------------------------------------------------------------------------------|
光标位置字符 | x | | |
----------------------------------------------------------------| p |
光标位置到行尾 | D(d End 或 d$) | y End 或 y$ | |
----------------------------------------------------------------| |
光标所在行 | dd | yy(Y) | P |
----------------------------------------------------------------| |
光标所在行以下n行 | ndd | nyy |在光标前面 |
----------------------------------------------------------------| 粘贴 |
光标所在行至文件尾 | dG | yG | |
----------------------------------------------------------------| |
光标所在行至第n行 | dnG | ynG | |
--------------------------------------------------------------------------------|
删除d 复制y粘贴p,全文尾巴是G 头是gg,整行尾巴是end,头是home
xp 调换两个字母的顺序
u 撤销上次的操作
. 重复上一次的操作
50a12 ESC 光标位置追加25对"12"
~ 大小写转换
(n)>> 当前n行向右移8个空格(一个制表符)
(n)<< 当前n行向左移8个空格(一个制表符)
ctrl+v 进入可视模式,使用光标选择,再结合删除/复制等快捷键操作
V 整行选取的可视模式
=====================================
vi命令的一般格式: (命令)(数字)(文本目标)
d3w 删除3个单词
y3G 复制到第3行
=====================================
vimtutor 查看vi的帮助教程
LANG=zh_CN.UTF-8 vimtutor 查看中文版(需要安装中文字体)
七 ex命令
d 删除行
m 移动行
co(t) 复制行
. 当前行
$ 文件最后一行
% 文件中每一行(等价1,$)
=====================================
ex命令的一般格式: (行范围)(命令)(行范围)
:.,$d 删除当前行至文件尾
:%t$ 复制所有行至文件尾
=====================================
八 模式搜索与替换
vi命令模式下
/pattern(:g/pattern) 按模式搜索
/"pattern paterrn" 如果搜索模式中包含空格, 要使用单引号或双引号
/\<pattern\> 搜索整个单词
* 搜索光标当前单词
n 同向重复搜索
d(y)/pattern 通过搜索进行修改(向后, 删除或复制光标与模式之间字符串)
d(y)?pattern 通过搜索进行修改(向前, 删除或复制光标与模式之间字符串)
ex命令
:s/old/new 当前行中替换第一次出现的模式
:s/old/new/g 当前行中替换所有出现的模式,默认不区分大小写
:s/old/new/gi i区分大小写
:s/old/new/gc 当前行中替换所有出现的模式, 需要确认
:行范围s/old/new/gc 行号范围中替换所有出现的模式, 需要确认
:%s/old/new/gi 全文范围中替换所有出现的模式, 区分大小写
:1,$s/old/new/g
vi命令的等价方式
/old 搜索old
cwnew ESC 修改为new(c为cut, w为word)(必须用c, 否则无法重复修改. w可为任意位置参数如$, 到行尾)
n 重复搜索, 跳过一次修改
n 重复搜索
. 重复修改
:g/pattern 全局搜索
可以将:g与其它ex命令结合在一起, 实现全局替换删除移动和复制
:g/old/s//new/gc与:%s/old/new/gc效果相同
:g/pattern/s/old/new/g(c) 在包含模式pattern的行中, 将old替换为new, g表示在该行进行全部替换, c表示需要确认
:g/old/s//new/g 搜索模式与替换模式相同
:g/pattern/d 删除符合模式的行
:g/pattern/行范围d 删除符合模式的多行(:g/pattern1/.,/pattern2/d 删除pattern1和pattern2之间的行)
:g/pattern/行范围m(t)行范围 移动(复制)符合模式的多行
=============================================
:g命令的一般格式: :g/pattern/行范围/ex命令/行范围
=============================================
:上箭头 访问ex命令的历史记录
九 单词缩写与命令映射
:ab abbr phrase 插入模式下设置单词缩写
:unab abbr 撤销缩写
:ab 查看当前定义的缩写
:map x command 命令模式下设置映射命令
:unmap x 撤销映射
:map 查看当前定义的映射
ctrl+v然后enter
esc, backspace, delete 映射中防止ex解释键
:map! x command 在插入模式下映射键
十 c风格缩进
在~home/.vimrc中加入以下设置, 可得到标准c风格缩进
set nocp incsearch
set cinoptions=:0,p0,t0
set cinwords=if,else,while,do,for,switch,case
set formatoptions=tcqr
set cindent
syntax on
set nu