vim程序编辑器

1. 关于 vi/vim

  • vi 是纯文字处理器,功能已经很齐全。
  • vim 则是一个“程序开发工具”,可主动以字体颜色辨别语法的正确性,方便程序设计。vim 官方网站

2. 常用按键说明

2.1 一般模式:移动光标

按键功能
h 或←左移一个字符
j 或↓下移一个字符
k 或↑上移一个字符
l 或→右移一个字符
nj 或 n↓下移n个字符
nl 或 n→右移n个字符,不会换行
******
Ctrl + f翻页,向下移动一页
Ctrl + b翻页,向上移动一页
Ctrl + d翻页,向下移动半页
Ctrl + u翻页,向上移动半页
******
+移动到下一行
-移动到上一行
n[space]按下数字键n接着按下空格键,会向后移动n个字符,可能换行
0或[Home]键数字0,移动至当前行首字符
$或[End]键移动至当前行尾字符
H大写H,移动至当前屏幕最上方行的首字符,与gg不同
M大写M,移动至当前屏幕中央一行的首字符
L大写L,移动至当前屏幕最下方行的首字符,与大G不同
G大写G,移动至文件最后一行
nG移动至文件的第n行,相当于命令模式下输入:n回车
gg移动至文件第1行
n[Enter]向下移动n行
******
/word向下寻找一个字符串“word”
?word向上寻找一个字符串“word”
n重复前一次查找
N反向重复前一次查找
:n1,n2s/word1/word2/g在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2
:1,$s/word1/word2/g从第一行到最后一行寻找word1,并替换为word2
:1,$s/word1/word2/gc从第一行到最后一行寻找word1,并替换为word2,但替换前会先要用户确认confirm
******
x,Xx向后删除一个字符,X向前删除一个字符
nx连续删除后面n个字符
dd删除光标所在一整行
ndd删除光标所在向下n行
d1G删除光标所在到第一行的所有数据
dG删除从光标所在到最后一行的所有数据
d$删除从光标所在出到该行的最后一个字符
d0删除从光标所在出到该行的第一个字符
yy复制光标所在的那一行
nyy复制光标所在向下n行
y1G复制光标所在行到第一行的所有数据
yG复制光标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p,Pp将已复制的数据在光标下一行粘贴,P为粘贴在光标上一行
******
J将光标所在行与下一行的数据结合成同一行
u复原前一个操作,undo
ctrl+r重做上一个操作,redo
.小数点,重复前一个操作,比如重复删除、重复粘贴等

2.2 编辑模式:插入或替换

按键功能
i, Ii为从目前光标所在处插入,I为在目前所在行的第一个非空格符处开始插入
a, Aa为从目前光标所在的下一个自付出开始插入,A为从光标所在行的最后一个字符处开始插入
o, Oo为在目前光标所在的下一行处插入新的一行,O为在目前光标所在处的上一行插入新的一行
r, Rr只会替换光标所在的哪一个字符一次;R会一直替换光标所在的文字,只到按下[Esc]键为止
[Esc]退出编辑模式,回到一般模式中

2.3 命令模式:保存离开等

按键功能
:w将编辑的数据写入硬盘文件中
:w!若文件属性为“只读”时,强制写入该文件,但最终要看文件的权限
:q离开vi(m)
:q!强制离开不保存文件
:wq保存后离开
:w[filename]将编辑的数据保存成另一个文件,另存为
:r[filename]立即读入另一个文件的数据,将“filename”文件的内容加到光标所在行后面
:n1,n2 w[filename]将n1到n2的内容保存成filename这个文件
:! command暂时离开vi(m)到命令行模式下执行command的显示结果。例如 :! ls即可查看当前目录下的文件信息
:set nu显示行号
:set nonu取消行号显示

3. vim 的功能

大部分 distributions 都以 vim 自动替代 vi 的功能了。

3.1 Visual Block(块选择)

字符选择:一般模式,按小写 v
一般模式,按小写 v,字符选择
行选择:一般模式,按大写 V
一般模式,按大写 V,行选择
块选择:一般模式,按 Ctrl+v
一般模式,按 Ctrl+v,块选择
粘贴 block:移动光标,按小写 p
移动光标,按小写 p 粘贴 block

3.2 多文件编辑

场景:如果想把文件A的部分内容拷贝到文件B中去,用Vim该怎么做?

  1. vim file_A file_B 打开多个文件
  2. :files 查看编辑的文件信息
  3. 文件相互跳转
按键说明
:n编辑下一个文件
:N编辑上一个文件
:files列出目前该 vim 打开的所有文件

3.3 多窗口功能

场景:vim 如何切割窗口并放入文件?

按键说明
:sp [filename]打开一个新分割窗口,filename可有可无。如果则在新分割窗口打开一个新文件,如果则在新分割窗口打开同一个文件。
ctrl-w + j或↓光标移动到下方窗口,指法:按住ctrl不放,按w,松开所有键后再按j
ctrl-w + k或↑光标移动到上方窗口,指法:按住ctrl不放,按w,松开所有键后再按k

3.4 vim 环境设置与记录(~/.vimrc, ~/viminfo)

vim 会主动将你的行为记录下来,保存在 ~/.viminfo 文件中。

vim 的环境设置参数

按键说明
:set nu
:set
设置和取消行号
:set hlsearch
:set nohlsearch
hlsearch 就是 highlight search,是否查找字符串时反白查找目标
:set autoindent
:set noautoindent
是否自动缩排(即按 enter 时光标换行后是否自动缩进)
:set backup是否自动保存文件,默认 nobackup
:set rulervim窗口右下角是否显示状态说明
:set showmodevim窗口左下角是否显示 --INSERT-- 之类的字眼
:set all显示目前所有的环境参数设置值
:syntax on
:syntax off
是否依据程序相关语法显示不同的颜色
:set bg=dark
:set bg=light
背景色设置

我们可以一次性将习惯的 vim 操作环境设置保存下来,记录在 ~/.vimrc 这个文件中。比如:
~/.vimrc设置

3.5 Dos 与 Linux 的断行字符

Dos中使用的断行字符为 ^M$ ,称为 CRLF 两个符号;Linux 仅使用 LF这个断行符。

如何批量转换文件断行符?

# -k:保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修订的时间)
# -n:保留原本的旧文件,将转换后的内容输出到新文件中
dos2UNIX [-kn] file [newfile]
UNIX2dos [-kn] file [newfile]

3.6 语系编码转换

中文编码:big5、utf8、gb2312

# --list:列出 iconv 支持的语系数据
# -f:from,接原本的编码格式
# -t:to,接新的编码格式
# -o:如果要保留源文件,写入新文件,可用 -o 选项
iconv --list
iconv -f 原本编码 -t 新编码 filename [-o newfile]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值