centos vim编辑器 第八节课
centos vim编辑器 第八节课
其他编辑器:
nano
gedit
emacs
VIM : 全程 Vi IMproved,由红帽老哥 Bram Moolenaar et al.开发
gvim7.3版本中已经默认支持Python、Ruby、Lua、Perl等其他脚本语言。
vimrc:vim的配置和语法文件,vim启动时读取它并执行命令。
安装vim: yum install -y vim-enhanced
反查安装包
which vim rpm -qf /usr/bin/vim yum install -y xxx
vim filename
vim +n filename // n是数字,可以定位到该文件的第n行
一般模式
命令模式 /末行模式
编辑模式
一般模式
左:h
下:j
上:k
右:l
:set number
:20 跳到第20行
文档首:gg ngg 跳到特定行
文档尾:G
行首:^ ,非空白字符的第一个字符,代表一行字符的开头 分界用
行尾:$
Windows下是 /r /n
撤销:u 相当于ctrl+z
行撤销)。行撤销命令撤销所有在前一个编辑行上的操作:U
重做:ctrl+r
剪切一行:dd 剪切多行: 2d
复制一行:yy 复制多行: 2yy
粘贴:p
在一般模式下,按v 进入Visual模式
v:区域选择 上下左右选中 ,然后复制或剪切 Linux就这个范儿P266
只需要按三次按键 或者按两次按键 先按v,上下移动,再按y,上下移动到合适的位置,最后按p进行粘贴 v+y+p 选中复制粘贴 v+x 或者v+d 选中剪切/删除 v+x+p 或者v+d+p 选中剪切粘贴
在一般模式下,按ctrl+v 进入Visual-block模式/块选中模式
ctrl+v,然后按下箭头,向下选择要缩进的行,shift+i,4个空格,再esc:可以实现统一缩进
https://blog.csdn.net/qiqiaiairen/article/details/51475951,vim 块选择 多行操作,visual block模式/块选择模式
https://blog.csdn.net/dark_tone/article/details/52856032,自定义vim快捷键
打开visual block模式
vim打开文件,处于一般模式下,将光标移动到第一行的i上头,然后按下【Ctrl】+v,左下角出现块示意。
它有五种前缀,对应着vim中的五种模式:
nore前缀: 非递归,使用前缀nore,表明不递归,否则按下i就等于按下k,就等于按下j,最后结果乱套
n前缀: 在普通模式下生效
v前缀: 在可视模式下生效
i前缀: 在插入模式下生效
c前缀: 在EX命令模式下生效
通过不同的前缀,就能明确告诉vim,我们自定义的快捷键在哪种模式下生效。
除此之外,还要配合键表:
<k0>-<k9> 小键盘数字0到9
<S-x> 大写S配合x,意味着shift+x组合键
<C-x> 大写C配合x,意味着ctrl+x组合键
<A-x> 大写A配合x,意味着alt+x组合键
<ESC> ESC键
<BS> backspace退格键
<CR> ENTER回车键
<Space> 空格键
<Shift> shift键
<Ctrl> ctrl键
<Alt> alt键
<F1>-<F12> F1到F12功能键
但因为某些历史原因,ALT几乎无法映射。
同时CTRL键被linux系统频繁使用,F1到F12功能键某些也被vim占用。
比如F1是帮助,这些都不适合用来映射,以免造成快捷键冲突。
在普通模式/一般模式下,:wq回车 改为fwq
nnoremap fwq :wq<CR>
在编辑模式下,按esc键回到一般模式,:w回车 a
imap <C+s> <ESC>:w<CR>a
增加如下设置,可以实现在保存 ~/.vimrc 时自动重启加载它。
cat >> ~/.vimrc << EOF
nmap io <Ctrl>v
nmap fwq :wq<CR>
autocmd BufWritePost $MYVIMRC source $MYVIMRC
EOF
编辑模式
I:行首
A:行尾
o:另起下行
末行模式
:/ 搜索 (只能全字匹配,比如有一个单词 LogFormat ,如果输入logformat是不匹配的,一定要输入LogFormat 才能搜索到)
?后跟查找的字符串。vim会显示文本中最后一个出现的字符串
n: 搜索过程中往下搜
不管用/还是?查找到第一个字符串后,按回车,vim会高亮所有的匹配文
:1,$s/iptables/IP/g 全局替换 第一行到最后一行
:%s/iptables/IP/g %相当于1,$
:6,10s/iptables/IP/g
:6,10s#/iptables/#IP#g 转义 ,@,#,\
跟sed的替换是一样的 :6,10s#/iptables/#IP#g 等同于 sed -i '6,10s/iptables/IP/g' 22.txt
:set list 查看文件中的空格,换行符,tab键
:set nu 显示行号
:nohl 不高亮
:x :如果什么内容都没有改,mtime ctime不会变 access,modify,change
:wq :如果什么内容都没有改,mtime ctime会变
vim的设置
http://www.apelearn.com/bbs/thread-5483-1-1.html
vimdiff
首先保证系统中的diff命令是可用的。Vim的diff模式是依赖于diff命令的。Vimdiff的基本用法就是:
vimdiff FILE_LEFT FILE_RIGHT
或
vim -d FILE_LEFT FILE_RIGHT
同时操作两个文件
同时退出: 单个文件 :q
:qa (quit all)
如果希望保存全部文件:
:wa (write all)
或者是两者的合并命令,保存全部文件,然后退出: 单个文件 :wq
:wqa (write, then quit all)
如果在退出的时候不希望保存任何操作的结果: 单个文件 :q!
:qa! (force to quit all)
f
vim 的暂存档、救援回复与开启时的警告讯息
http://blog.sina.com.cn/s/blog_69a976e1010166lg.html
Linux就这个范儿 P264
当我们在使用 vim 编辑时, vim 会在与被编辑的档案的目录下,再建立一个名为 .filename.swp 的档案。
比如编辑/tmp/vitest/man.config 这个档案时, vim 会主动的建立 /tmp/vitest/.man.config.swp 的暂存档,你对 man.config 做的动作就会被记录到这个 .man.config.swp 当中喔!如果你的系统因为某些原因断线了, 导致你编辑的档案还没有储存,这个时候 .man.config.swp 就能够发会救援的功能了!
vim有恢复功能,在你连续4秒不键入内容时,vi会跟磁盘做一次同步,或者是连续键入200个字符之后,这些参数由updatetime和updatecount选项来决定。
如果你用恢复功能了,在恢复之后需要删除xx.swp文件,否则每次你打开xx文件时都会有下面的警告信息,很烦人。
wap file ".man.config.swp" already exists!底下说明你可进行的动作
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
如果你不需要备份和回复功能,可以在vimrc或viminfo配置文件中关掉这个功能
• 问题一:可能有其他人或程序同时在编辑这个档案
由于 Linux 是多人多任务的环境,因此很可能有很多人同时在编辑同一个档案。如果在多人共同编辑的情况下, 万一大家同时储存,那么这个档案的内容将会变的乱七八糟!为了避免这个问题,因此 vim 会出现这个警告窗口! 解决的方法则是:
找到另外那个程序或人员,请他将该 vim 的工作结束,然后你再继续处理。
如果你只是要看该档案的内容并不会有任何修改编辑的行为,那么可以选择开启成为只读(O)档案, 亦即上述画面反白部分输入英文『 o 』即可,其实就是 [O]pen Read-Only 的选项啦!
解决方法:叫其他人不要编辑那个文件,或者自己用只读模式打开
• 问题二:在前一个 vim 的环境中,可能因为某些不知名原因导致 vim 中断 (crashed)
这就是常见的不正常结束 vim 产生的后果。解决方案依据不同的情况而不同喔!常见的处理方法为:
如果你之前的 vim 处理动作尚未储存,此时你应该要按下『R』,亦即使用 (R)ecover 的项目, 此时 vim 会载入 .man.config.swp 的内容,让你自己来决定要不要储存!这样就能够救回来你之前未储存的工作。 不过那个 .man.config.swp 并不会在你结束 vim 后自动删除,所以你离开 vim 后还得要自行删除 .man.config.swp 才能避免每次打开这个档案都会出现这样的警告!
如果你确定这个暂存盘是没有用的,那么你可以直接按下『D』删除掉这个暂存盘,亦即 (D)elete it 这个项目即可。 此时 vim 会载入 man.config ,并且将旧的 .man.config.swp 删除后,建立这次会使用的新的 .man.config.swp 喔!
解决方法:rm -f .man.config.swp
f