知识点

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. P1024 一元三次方程求解

    P1024 一元三次方程求解 #include<cstdio> #include<iostream> #include<algorithm> using names ...

  2. JS-输入数字输出大写中文

    function(n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', ...

  3. 微信 php 获取token 第二次失败解决办法

    第一次成功了,第二次总是失败,很简单,session问题 clearstatcache(); $_SESSION = ''; $_COOKIE = ''; //获得参数 signature nonce ...

  4. Q&A - Apache、Nginx与Tomcat的区别?

    一.     定义: 1.     Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上.其属于应用服务器.Apache支持支持模块多,性能稳定,A ...

  5. Java OOP——第五章 异常

    1. 尝试通过if-else来解决异常问题: Eg: public class Test2 {       public static void main(String[] args) {       ...

  6. (二)活用ComponentScan

    项目改造成spring cloud项目后,有非常多组件是复用的,比如(一)敏感信息混淆的组件,比如数据库.Redis等配置, 比如常用的api组件Swagger配置.每个微服务组件里都会有若干个组件随 ...

  7. ZOJ3640 概率DP

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

  8. 宁夏邀请赛F FLOYD

    Moving On Firdaws and Fatinah are living in a country with nn cities, numbered from 11 to nn.Each ci ...

  9. opencv中对图像的像素操作

    1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...

  10. python基础之流程控制、数字和字符串处理

    流程控制 条件判断 if单分支:当一个“条件”成立时执行相应的操作. 语法结构: if 条件: command 流程图: 示例:如果3大于2,那么输出字符串"very good" ...