知识点

vi的三种模式

一般模式

ESC 可回到一般模式

相关按键
j 代表 向下按钮
k 代表 向上按钮
h 代表 向左按钮
l 代表 向右按钮
20j 等代表 向下移动20行
Ctrl + f 代表 Page down
Ctrl + b 代表 Page up
Ctrl + d 代表 向后翻半页
Ctrl + u 代表 向前翻半页
n[space] -> 向右移动n个字符
0或者[home] -> 移动该行的最前的一个字符
$或者[end] -> 移动到该行的最后一个字符
H -> 移动到屏幕最上方第一行的第一个字符
M -> 移动到屏幕中间行第一个字符
L -> 移动到屏幕最下方一行的第一个字符
G -> 移动到档案的最后一行
nG -> 移动到第n行
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,取代前显示提示符
x -> 向后删除一个字符,相当于del
X -> 向前删除一个字符,相当于backspace
dd -> 删除游标所在行
ndd -> 连续删除n行
d0和d$ -> 删除光标到该行的最前、或最后的字符
d1G -> 删除光标前面的所有内容
dG -> 删除光标后面的所有内容
yy -> 复制光标所在那一行
yy -> 复制光标向下n行
y1G、yG、y0、y$ -> 类似于d
p -> 下一行开始粘贴
P -> 在上一行粘贴内容
u -> 复原前一个动作
Ctrl + r -> 重做前一个动作
. -> 重复前一个动作

区块选择

v -> 光标经过的字符反白选择
V -> 光标经过的行反白选择
Ctrl + v -> 长方形的方式选择
y -> 复制反白的地方
d -> 删除反白的地方

编辑模式

在一般模式下,按下 i oa等字符进入编辑模式

按不同的字符有不同的效果
i -> 在光标所在处插入
I -> 在该行第一个非空字符插入
o -> 在光标所在下一行插入新行
O -> 在光标所在上一行插入新行
r或R -> 进入取代模式,r取代一次,R一直取代

指令模式

在一般模式下按下 : /?三个中的任何一个按钮,就能进入命令模式

命令

在命令模式下的命令

  1. :wq (存储后退出)
  2. :w (保存)
  3. :q! (强行退出,不保存)
  4. :wq! (强行写入,并退出)
  5. :w filename (另存为filename档案)
  6. :r filename (在光标所在读入filename档案数据)
  7. :n1,n2 w filename (将n1到n2行另存为filename档案)
  8. :! command (执行shell脚本)
  9. :set nu (显示行号)
  10. :set nonu (取消行号)
  11. :n (编辑下一个档案)
  12. :N (编辑上一个档案)
  13. :files (列出vim开启的所有档案)
  14. :sp filename (窗口分割)

    Ctrl + w + j -> 移动到下一个窗口
    Ctrl + w + k -> 移动到上一个窗口
    Ctrl + w + q -> 退出该窗口

  15. :vs (窗口左右切割)
  16. e! 恢复成档案原本的内容

vim 环境设定 ~/.vimrc ~/.viminfo

:set hlsearch (设定高亮搜寻)
:set nohlsearch (取消高亮搜寻)
:set autoindent (设定自动缩排)
:set noautoindent (取消自动缩排)
:set backup (设定自动备份)
:set nobackup (取消自动备份)
:set ruler (显示右下角的状态信息)
:set noruler (取消右下角的状态信息)
:set showmode (显示左下角的状态信息)
:set noshowmode (取消左下角的状态信息)
:set backspace=(012) (设定backspace)
0或1,仅可删除刚输入的字符
2,可以删除任意字符
:set all (显示目前所有的环境参数设定)
:set (显示与系统默认值不同的参数设定)
:syntax on (语法高亮)
:syntax off (取消语法高亮)
:set bg=dark
:set bg=light

配置文件

总的配置文件 /etc/vimrc ,建议修改个人配置文件 ~/.vimrc,例如

~/.vimrc
set hlsearch "高亮搜寻,这是注释"
set nu "显示行号"
set autoindent
set backspace=2
set ruler
set showmode
set bg=dark
syntax on

其他知识

Ctrl + z 将程序丢到背景去执行

vim 编码问题需要考虑

  1. linux系统默认支持的语系,与 /etc/sysconfig/i18n 有关
  2. 终端bash语系,与环境变量 LANG 有关
  3. 档案原本的编码
  4. 开启终端机的软件的编码,如窗口接口

一般需要保证第3点第4点的编码保证一致。

DOS 使用的断行字符 ^M$ CRLF 回车换行
linux 使用的断行字符 LF 换行

DOS 与 linux 间的格式转换

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
-k 不修改 mtime
-n 保持旧档,输出到新档
dos2unix -k -n oldfile newfile

档案的编码装换

iconv --list 列出iconv支持的语系
iconv -f 原本编码 -t 新编码 filename [-o newfile]
iconv -f big5 -t utf8 file.big5 -o file.utf8

big5 为 ISO-8859

参考

鸟哥的Linux私房菜 第三版

linux备忘录-vi和vim的更多相关文章

  1. Linux系统配置VI或VIM的技巧

    Linux系统配置VI或VIM的技巧作者:IT专家网论坛出处:IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用⋯⋯ 1.V ...

  2. Kali Linux的vi编辑器/vim编辑器使用方法

    转载声明:本文为转载文章 原文地址:https://www.52host.cn/blog/kali-linux-vi-editor/ Kali Linux系统的vi编辑器/vim编辑器的使用和Cent ...

  3. linux下vi或vim操作Found a swap file by the name的原因及解决方法

    在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION    Found a s ...

  4. linux的vi和vim编辑器操作

    vi:linux内部的文本编辑器:vim:vi的增强版,具有程序编辑的能力. vi和vim的三种常见模式: (1)正常模式(一般模式):vim一打开就是这种模式,此模式下可以使用各种快捷键,比如复制粘 ...

  5. linux中vi和vim操作

    一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...

  6. linux 下vi与vim区别以及vim的使用

    vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对 ...

  7. Linux之vi和vim编辑器

    目录 1. vi和vim简介 2. vi 和 vim 的三种常见模式 2.1 正常模式 2.2 插入模式 2.3 命令行模式 3. 三种模式间的切换 4. 常用快捷键案例 5. 常用命令 1. vi和 ...

  8. linux下vi与vim区别以及vim的使用-------vim编辑时脚本高光显示语法

    vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对U ...

  9. 【Linux】vi(vim)起步学起来有些困难,一步一步温习

    以Tomcat的配置文件service.xml为例,记录.学习vi的最常用操作. > 什么是vi or vim? [nicchagil@localhost bak]$ man vi VIM() ...

随机推荐

  1. caffe resize用interpolation

    opencv的resize默认的是使用双线性插值INTER_LINEAR,也可以是尝试其他的方式进行插值操作 if (param.random_interpolation_method()) { // ...

  2. cudaMalloc和cudaMallocPitch

    原文链接 偶有兴趣测试了一下题目中提到的这两个函数,为了满足对齐访问数据,咱们平时可能会用到cudamallocPitch,以为它会带来更高的效率.呵呵,这里给出一段测试程序,大家可以在自己的机器上跑 ...

  3. JT796、JT808、JT809、JT1076、JT1077、JT1078部标平台过检道路运输车辆卫星定位系统企业视频监控平台检测登记表

    道路运输车辆卫星定位系统企业视频监控平台检测登记表的具体格式如下: 报名检测需要以下材料: 0检测报名须知.doc   点击下载 1检测意向单.doc   点击下载 2-1道路运输车辆卫星定位系统企业 ...

  4. 在线代码编辑器 Codemirror 的轻量级 React 组件

    代码编辑器 CodeMirror 的轻量级 React 组件 demo @uiw-react.github.io/react-codemirror/ 特性:

  5. jsp <form>表单提交中如何在value属性中写表达式

    <input type="text" name="grop_id" value="<%=rs.getString(2)%>" ...

  6. 利用python在windows环境下爬取赶集网工作信息。

    主要用到了多进程和多线程的知识,最后结果保存成csv文件格式,如有需要可改成数据库版本. 对用到的库做下简要介绍,具体请参考官方文档: xpinyin.Pinyin:将输入的中文转成拼音 concur ...

  7. Logrotate实现Catalina.out日志每俩小时切割

    一.Logrotate工具介绍 Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具.用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数 ...

  8. 【LeetCode #179】Largest Number 解题报告

    原题链接:Largest Number 题目描述: Given a list of non negative integers, arrange them such that they form th ...

  9. 关于TP3.2框架读取Sql server中文字段数据以及处理乱码的一些小心得

    最近要做一个项目,需要使用TP3.2框架,之前什么也不会,就硬着头皮上了,结果真的闹了挺多emmmmmm挺低级的错误,就像SQL Server中文字段的读取,一开始我是照着读取英文字段的格式来写的,在 ...

  10. ZOJ3640 概率DP

    Background If thou doest well, shalt thou not be accepted? and if thou doest not well, sin lieth at ...