您的位置:首页 > 运维架构 > Linux

linux:vim基础

2015-08-23 19:23 381 查看
原文链接:http://blog.csdn.net/xiazdong/article/details/7959495

练习vim按键的小游戏:http://vim-adventures.com/

wiki:文本编辑器的比较:http://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%BC%96%E8%BE%91%E5%99%A8%E6%AF%94%E8%BE%83
joe download:http://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-3.7/joe-3.7.tar.gz/download?use_mirror=nchc&download=

一、vi、vim介绍

文本编辑器分为:
(1)基于图形界面,如gedit、geany等;
(2)基于命令行,如nano、vi、joe等;
每个命令行界面的文本编辑器都有各自不同的快捷键,比如nano的保存为CTRL+W,vim的保存为:w;
基于命令行的文本编辑器是必要的,因为Linux的tty1~tty6都是命令行界面,是打不开图形界面的文本编辑器的;

vi是每个Linux Distribution都默认安装的文本编辑器,并且很多软件的默认编辑器都是vi,因此学习vi是很必要的;
vim是vi的高级版本,vi是文本编辑器,而vim应该说是程序编辑器,因为能够像一般的IDE一样,根据文件名载入不同的语法高亮,即颜色区分,比如java文件会遵循java的语法高亮;
下面我们就编写一个"hello world"的java程序来看看vim的语法高亮;



二、vi/vim按键

“一般模式”的常用按键
h
向左
J
向下
K
向上
l
向右
20h
向左20个字符
20j
向下20行
20k
向上20行
20l
向右20个字符
Page Up
向上翻页
Page Down
向下翻页
Home
光标移到当前行的最左端
End
光标移到当前航的最右端
n [空格]
光标向右移动n个字符
N[Enter]
光标向下N行
G
光标移到最后一行
nG
光标移动到第n行
gg或1G
光标移动到第一行
/word
向下查找word
?word
向上查找word
n
如果是/word后使用,则表示向下继续查找;

如果是?word后使用,则表示向上继续查找;
N
如果是/word后使用,则表示向上继续查找;

如果是?word后使用,则表示向下继续查找;
:n,m/old/new/g
从第n行到第m行中,将old替换为new
:n,$s/old/new/g
从第n行到最后一行中,将old替换为new
u
类似windows中的CTRL+Z,前一步
x
向后删除一个字符
X
向前删除一个字符
3x
向后删除3个字符
3X
向前删除3个字符
dd
删除当前行
3dd
删除当前行开始的3行
yy
复制当前行
3yy
复制当前行开始的3行
p
黏贴到当前光标的下一行
P
黏贴到当前光标的上一行
CTRL+r
重做前一个操作
.
重复前一个操作
“命令行模式”的常用按键
:w
保存
:q
退出vim
:wq
保存并退出
:wq!
(在可以转换权限的情况下)强制保存并退出
:q!
直接退出不保存
:w filename
另存为filename
:n,m w filename
将第n行到第m行另存为filename
:set nu
显示行号
:set nonu
不显示行号
:! command
暂时离开vim,并执行command,执行完后再进入vim
:r filename
将filename文件的数据读入当前文件

:set all
显示当前vim的环境配置

三、vim的恢复机制

vim正在编辑某个文件时都会同时存在 .file.swp,此文件用来暂存,帮助恢复文件内容,当vim正常关闭此文件时,.filename.swp文件会消失;



我们看到图中说明了出现此界面的两个原因:
(1)多人同时编辑此文件:因为Linux是多用户的操作系统,因此可能两个人同时登陆并编辑此文件,如果A进入系统开始编辑1.txt文件,则会出现.1.txt.swp,当A还没编辑完但B也想进去编辑时,因为此文件的目录中存在.1.txt.swp,则就会出现上图的界面;
(2)非正常关闭文件;

图中最后一行说明了我们此时可以采取的几个动作:
(1)o:以只读方式打开;
(2)R:恢复,即从swp文件中恢复,但是swp文件不会随着vim关闭而删除,需要手动删除;
(3)d:删除swp文件;
(4)q:退出vim;

四、vim记录及默认配置文件

/etc/vimrc文件为全局vim配置文件;

1.如果我们用xiazdong账户使用vim后,在/home/xiazdong就会出现.viminfo文件,此文件用来作为vim的日志,记录用户使用vim打开了什么文件,做了什么操作;
2.如果xiazdong账户想要配置vim的默认环境,则可以在/home/xiazdong创建.vimrc,并且配置一些特征,比如显示行号,语法检查等;
一般使用如下配置:

set hlsearch

set backspace=2

set autoindent

set nu

set ruler

set showmode

set bg=dark

syntax on
五、Visual Block功能

可以用于块复制;
(1)CTRL+v:开始复制块;
(3)y:复制块;
(4)p:黏贴块;
(5)d:删除块;



六、同时编辑多个文件

多文件编辑的好处是能够将一个文件的某些内容yy后,p到另一个文件中;

vim file1 file2 即可同时编辑两个文件,但是屏幕中同时只会出现一个文件内容,需要进行切换;
(1):n:向下切换;
(2):N:向上切换;
(3):files:列出当前编辑的所有文件;

七、多窗口编辑

如下图:一个界面能够显示多个文件内容;



(1) :sp :打开当前文件;
(2) :sp filename:打开filename文件;

(1)CTRL+w+↓:光标切换到下一个窗口;
(2)CTRL+w+↑:光标切换到上一个窗口;
(3):q:关闭光标所在的窗口;

八、编码问题

可能会出现乱码问题,解决方法:保持终端的字符编码与文件的字符编码一致!

tty1~tty6不支持显示中文,因此在tty1~tty6中显示中文必出现乱码;
设置终端的字符编码:



编码转换命令:iconv
iconv -f 文件的原本编码 -t 文件的新编码 filename -o newfilename
比如有一个big5编码的文件:1.big5,要转换成utf8的文件:2.utf8,则: iconv -f big5 -t utf8 1.big5 -o 2.utf8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: