linux备忘录-vi和vim
知识点
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 o或a等字符进入编辑模式
按不同的字符有不同的效果
i -> 在光标所在处插入
I -> 在该行第一个非空字符插入
o -> 在光标所在下一行插入新行
O -> 在光标所在上一行插入新行
r或R -> 进入取代模式,r取代一次,R一直取代
指令模式
在一般模式下按下 : / 或 ?三个中的任何一个按钮,就能进入命令模式
命令
在命令模式下的命令
- :wq (存储后退出)
- :w (保存)
- :q! (强行退出,不保存)
- :wq! (强行写入,并退出)
- :w filename (另存为filename档案)
- :r filename (在光标所在读入filename档案数据)
- :n1,n2 w filename (将n1到n2行另存为filename档案)
- :! command (执行shell脚本)
- :set nu (显示行号)
- :set nonu (取消行号)
- :n (编辑下一个档案)
- :N (编辑上一个档案)
- :files (列出vim开启的所有档案)
:sp filename (窗口分割)
Ctrl + w + j -> 移动到下一个窗口
Ctrl + w + k -> 移动到上一个窗口
Ctrl + w + q -> 退出该窗口- :vs (窗口左右切割)
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 编码问题需要考虑
- linux系统默认支持的语系,与 /etc/sysconfig/i18n 有关
- 终端bash语系,与环境变量 LANG 有关
- 档案原本的编码
- 开启终端机的软件的编码,如窗口接口
一般需要保证第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的更多相关文章
- Linux系统配置VI或VIM的技巧
Linux系统配置VI或VIM的技巧作者:IT专家网论坛出处:IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用⋯⋯ 1.V ...
- Kali Linux的vi编辑器/vim编辑器使用方法
转载声明:本文为转载文章 原文地址:https://www.52host.cn/blog/kali-linux-vi-editor/ Kali Linux系统的vi编辑器/vim编辑器的使用和Cent ...
- 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 ...
- linux的vi和vim编辑器操作
vi:linux内部的文本编辑器:vim:vi的增强版,具有程序编辑的能力. vi和vim的三种常见模式: (1)正常模式(一般模式):vim一打开就是这种模式,此模式下可以使用各种快捷键,比如复制粘 ...
- linux中vi和vim操作
一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...
- linux 下vi与vim区别以及vim的使用
vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对 ...
- Linux之vi和vim编辑器
目录 1. vi和vim简介 2. vi 和 vim 的三种常见模式 2.1 正常模式 2.2 插入模式 2.3 命令行模式 3. 三种模式间的切换 4. 常用快捷键案例 5. 常用命令 1. vi和 ...
- linux下vi与vim区别以及vim的使用-------vim编辑时脚本高光显示语法
vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对U ...
- 【Linux】vi(vim)起步学起来有些困难,一步一步温习
以Tomcat的配置文件service.xml为例,记录.学习vi的最常用操作. > 什么是vi or vim? [nicchagil@localhost bak]$ man vi VIM() ...
随机推荐
- 关于requireJS的同步加载和异步加载
这篇随笔主要记录require('name')和require(['name1','name2'])在同步和异步加载使用的区别 1.require('name')同步加载模块的形式 define(fu ...
- 配置伪静态(URL重写)
本篇借鉴了很多文章,这里做个记录. 有时我们的导航栏出现xx.aspx?id=x&name=xx 等等这样,会显得不好看,我们可以利用伪静态来美化我们的导航栏,伪静态的形式可以自己定义,本质还 ...
- js 动态创建标记
innerHTML:一旦使用了这个属性,它的全部内容都要被替换掉.且不会返回任何对刚插入的内容的引用 与document.write()方法一样,innerHTML属性也是HTML专有属性,不能用于任 ...
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)
转载请标明出处: 首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc12-hystix-dashbd/ 本文出自方志朋的博客 最新Fin ...
- MyEclipse的快捷键大全(超级实用,方便)
常用快捷键 1. [ALT+/] 能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ALT+/]快捷键带来的好处吧. 2. [Ctrl+O] 显示类 ...
- Centos7 使用LVM进行新加磁盘管理
centos7使用LVM管理一块新的磁盘 注意!文中凡是带#的都是命令标志. 一些重要概念: LV(Logical Volume)- 逻辑卷, VG(Volumne Group)- 卷组, P ...
- node服务端渲染(完整demo)
简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html webpack打包多页面 node端异步请求 服务端日志打 ...
- 【CodeBase】PHP将数组键名转成变量名
<?php /** * php 把数组中的键名所为变量名键值作为变量名 */ $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>5,'e'=> ...
- 谈一谈如何远程访问MySQL(腾讯云,云主机)
连接MySQL (其他的sql 基本相同套路) 腾讯云不管怎么设置端口和MySQL权限以及监听端口就是不能连接? 远程访问MySQL数据库的几个关键点 端口设置 数据库权限设置 数据库的监听端口设置 ...
- POJ 3977 折半枚举
链接: http://poj.org/problem?id=3977 题意: 给你n个数,n最大35,让你从中选几个数,不能选0个,使它们和的绝对值最小,如果有一样的,取个数最小的 思路: 子集个数共 ...