admin 管理员组

文章数量: 887021

vi

1 常用按键组合

1.1 光标移动
  • 【page down】 下一页
  • 【page up】上一页
  • 【home】光标移动到该行第一个字符
  • 【end】光标移动到该行最后一个字符
  • 【G】该文件最后一行
  • 【gg】该文件首行
1.2 搜寻和取代
  • /word 向光标之下寻找一个叫word的字符串
  • ?word 向光标之上寻找一个叫word的字符串
  • 【n】重复上一个搜寻动作
  • 【N】和n相反,表示反向进行上一个动作
  • :n1,n2s/word1/word2/g 在n1和n2行之间寻找word1这个字符串,并将其取代为word2
  • :1,$s/word1/word2/g 在全文寻找word1这个字符串,并将其取代为word2
  • :1,$s/word1/word2/g 在全文寻找word1这个字符串,并提示用户是否将其取代为word2
1.3 删除 复制粘贴(在非编辑状态下)
  • 【dd】删除游标所在的一整行。
  • 【ndd】向下删除n行。
  • 【d1G】删除光标所在到第一行的所有数据。
  • 【dG】删除光标所在到最后一行的所有数据。
  • 【yy】复制游标所在的那一行。
  • 【u】复原上一个动作,也就是撤回。
  • 【CTRL+r】重复上一个动作。
1.4 指令列模式下的常用按钮
  • 【ZZ】 文件没有更动,则不存储离开,如果有改变,则保存后离开。
  • 【:w [filename] 】将编辑后的内容保存成另一个文件。
  • 【:r[filename] 】将该文件内容写入到从游标所在位置开始的后面。
  • 【:n1,n2 w [filename] 】将n1行到n2行的内容存储成filename这个文件。

vim

1 同时编辑多文本文件

vim 文件1 文件2
:n 切换到下一个文件
:N 切换到上一个文件
:files 列出这个vim正在编辑的所有文件

2 分区窗口

也就是说,一个窗口显示多个文件或者一个文件分区显示

vim file1
:sp[filename] 开启新分区打开文件,如果不写filename 默认将该文件再次打开。
【ctrl+w+向上箭头/向下箭头】 光标在文件之间的切换。
【ctrl+w+q】 结束离开该分区,或者直接保存退出。

如下:

3 补全功能

ctrl+x  ->  ctrl+n 内容补全(文件中反复出现的,会有提示)。
ctrl+x  ->  ctrl+o 以扩展名作为语法补充,以vim内建的关键字予以补充。

vim 环境设定和记录: ~/.vimrc,~/.viminfo

我们每次的vim操作都会记录在~/.viminfo中。
vim的设置一般放在/etc/vimrc下,但是一般不建议去修改它,而是在~目录下新建.vimrc

在这里说几个常用的vim设定:

:set nu 设置行号
:set nonu 取消行号

vi和vim的中文乱码问题

要考虑的地方:
1 首先linux系统默认支持的语系数据 查看 /etc/locale.conf。

2 你的终端界面(bash)的语系,这与LANG和LC_ALL这几个变数有关。
3 你的文件原来的编码方式。
4 开启终端机的软件,例如在GNOME底下的窗口接口。

一般出现的问题都在3和4上,3和4的编码不一致导致。
4的问题的修改,比如目前文件的编码是big5,那么修改终端机软件的编码如下:

编码方式的转换

1首先查看该文件的编码方式

方式1:

在vim下使用
:set fileencoding

如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添加以下内容:

set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。

方式2:
enca (如果你的系统中没有安装这个命令,可以用sudo yum install -y enca 安装 )查看文件编码

2 编码方式的转换

  1. 在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
  1. enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename
  1. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile

选项和参数:

本文标签: 详细 Linux vi vim