Linux--vim的使用
1、概述:
Vim 是从 vi 发展出来的一个文本编辑器。具有代码补全、编译及错误跳转等功能
2、vim编辑器的常用命令:
图源:https://vimsky.com/article/1894.html
2.1 vim键盘图:
2.2 vim的三种模式:
图源:https://www.runoob.com/linux/linux-vim.html
3、vim的环境设置参数:
(在一般命令模式下的常用操作):
:set nu :set nonu |
设置与取消行号显示 |
:set hlsearch :set nohlsearch |
hlsearch就是 high light search(高亮度搜寻)。这个就是设置是否将搜寻的字串反白的设置值。默认值是 hlsearch |
:set autoindent :set noautoindent |
是否自动缩排?autoindent就是自动缩排 |
:set backup | 是否自动储存备份文件?一般是 nobackup 的,如果设置 backup的话,那么当你更动任何一个文件时,则原始文件会被另存成一个文件名为filename~的文件。举例来说,我们编辑 hosts,设置 :set backup,那么当更动 hosts时,在同目录下,就会产生 hosts~文件名的文件,记录原始的 hosts文件内容 |
:set ruler | 还记得我们提到的右下角的一些状态列说明吗?这个 ruler就是在显示或不显示该设置值的 |
:set showmode | 是否要显示 --INSERT--之类的字眼在左下角的状态列。 |
:set backspace=(012) | 一般来说,如果我们按下 i进入编辑模式后,可以利用倒退键 (backspace) 来删除任意字符的。但是,某些 distribution则不许如此。此时,我们就可以通过 backspace 来设置啰~ 当backspace为 2时,就是可以删除任意值;0或 1时,仅可删除刚刚输入的字符,而无法删除原本就已经存在的文字了! |
:set all | 显示目前所有的环境参数设置值 |
:set |
显示与系统默认值不同的设置参数,一般来说就 是你有自行变动过的设置参数啦! |
:syntax on :syntax off |
是否依据程序相关语法显示不同颜色?举例来说,在编辑一个纯文本文件时,如果开头是以 # 开始,那么该列就会变成蓝色。如果你懂得写程序,那么这个 :syntax on 还会主动的帮你除错 呢!但是,如果你仅是编写纯文本,要避免颜色对你的屏幕产生的干扰,则可以取消这个设置。 |
:set bg=dark :set bg=light |
可用以显示不同的颜色色调,默认是“ light”。如果你常常发现注解的字体深蓝色实在很不容易看,那么这里可以设置为 dark |
.vimrc的完整配置文件可参考github项目https://github.com/amix/vimrc
3.1 omnifunc设置:
注:与4.4一致
当使用vi 自动补全时 CTRL+x -> CTRL+o 报错:omnifunc is not set
原因:vim默认情况下不启用 Omni 补全。要打开全向补全,需要在你的.vimrc文件中加入如下语句:
filetype plugin on
|
|
set omnifunc=syntaxcomplete#Complete
|
注:~/.vimrc文件中默认注释格式是"此为注释内容"。
4、vim中的额外功能
4.1 区块选择(visual block)
#实现整个区块的复制、选择、移动、操作
|
|
v 字符选择,会将光标经过的地方反白选择!
|
|
V 列选择,会将光标经过的列反白选择!
|
|
[Ctrl]+v 区块选择,可以用长方形的方式选择数据
|
|
y 将反白的地方复制起来
|
|
d 将反白的地方删除掉
|
|
p 将刚刚复制的区块,在光标所在处贴上!
|
4.2 多文件编辑
#同时编辑多个文件
|
|
#vim后接多个文件名
|
|
:n 编辑下一个文件
|
|
:N 编辑上一个文件
|
|
:files 列出目前这个 vim的打开的所有文件
|
4.3 多窗口功能
#在命令行界面输入“:sp {filename}”即可!那个filename可有可无。
|
|
#如果想要在新窗口启动另一个文件,就加入文件名,否则仅输入:sp时,出现的则是同一个文件在两个窗口间!
|
|
#用[ctrl]+w+↑”及“[ctrl]+w+↓”在两个窗口之间移动
|
|
:sp [filename]
|
|
#打开一个新窗口,如果有加 filename, 表示在新窗口打开一个新文件,否
|
|
#则表示两个窗口为同一个文件内容(同步显示)。
|
|
[ctrl]+w+j或[ctrl]+w+↓
|
|
#按键的按法是:先按下 [ctrl]不放,再按下 w后放开所有的按键,然后再
|
|
#按下 j(或向下方向键),则光标可移动到下方的窗口。
|
|
[ctrl]+w+k或[ctrl]+w+↑
|
|
#同上,不过光标移动到上面的窗口。
|
|
[ctrl]+w+q
|
|
#其实就是 :q结束离开啦!举例来说,如果我想要结束下方的窗口,
|
|
#那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下
|
|
#[ctrl]+w+q啊!
|
4.4 vim的挑字补全功能
#程序语言的语法以及特定的语法关键字的补全
|
|
[ctrl]+x -> [ctrl]+n #通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐
|
|
[ctrl]+x -> [ctrl]+f #以当前目录内的“文件名”作为关键字,予以补齐
|
|
[ctrl]+x -> [ctrl]+o #以扩展名作为语法补充,以 vim内置的关键字,予以补齐
|
5、关于Linux中的换行问题:
参考:"\n,\r,\r\n"的区别
回车、换行的区别
在Windows中:
‘\r’ (回车):即将光标回到当前行的行首(而不会换到下一行),之后的输出会把之前的输出覆盖
‘\n’ 换行,换到当前位置的下一位置,而不会回到行首;
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即"\r";
也就是说:
Linux中遇到换行符("\n")会进行回车+换行的操作,回车符(“\r”)反而只会作为控制字符("^M")显示,不发生回车的操作。
而windows中要回车符+换行符("\r\n")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行。
一个直接后果是:
Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;
Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
因为断行字符以及 DOS与 Linux操作系统下面一些字符的定义不同,因此,不
建议在 Windows系统当中将文件编辑好之后,才上传到 Linux系统,会容易发生错误
问题。
5.1 断行符转换:
解决方法:使用DOS与UNIX字符转换命令unix2dos 和 dos2unix
类似的还有 mac2unix, unix2mac 适用于mac系统和unix系统编码转换;
字符转换命令一般默认没有安装,因此使用时需要自行安装:
查看命令
yum -y install [需要安装的命令*]
|
|
su #使用root权限
|
|
yum -y install unix2dos*
|
|
yum -y install dos2unix*
|
|
#DOS编码转为UNIX编码
|
|
dos2unix filename newfile
|
|
#UNIX编码转DOS编码
|
|
unix2dos filename newfile
|
|
#选项与参数
|
|
-k :保留该文件原本的 mtime时间格式(不更新文件上次内容经过修订的时间)
|
|
-n :保留原本的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new
|
|
#有些机器上没有安装dos2unix命令,也可以使用vim命令修改编码
|
|
vim filename
|
|
#vim打开文件后执行下列命令即可转为unix编码
|
|
:set fileformat=unix
|
6、vim中的编码问题:
需要注意如果你的文件是使用 ANSI码编码制作的,但在 vim的终端接口中你使用的是万国码(utf8),
由于编码的不同,你的中文文件内容当然就是一堆乱码了
1.你的 Linux系统默认支持的语系数据:这与 /etc/locale.conf有关;
2.你的终端接口(bash)的语系:这与 LANG, LC_ALL这几个变量有关;
3.你的文件原本的编码;
4.打开终端机的软件,例如在 Terminal下面的窗口接口。事实上最重要的是第三与第四点,
只要这两点的编码一致,你就能够正确的看到与编辑你的中文文件。否则就会看到一堆乱码啦!
编辑 ~/.vimrc文件,插入以下内容,更改编码相关信息。
set encoding=utf-8
|
|
set termencoding=utf-8
|
|
set fileencoding=utf-8
|
|
set fileencodings=ucs-bom,utf-8,cp936,gb18030
|
|
set imcmdline
|
|
source $VIMRUNTIME/delmenu.vim
|
|
source $VIMRUNTIME/menu.vim
|
注:关于vim中的编码问题:https://www.jianshu.com/p/44691357c8ee
6.1 编码语系转换:iconv命令
选项与参数
-f 输入编码
|
|
-t 输出编码
|
|
-c 忽略不可转换的字符
|
|
--unicode-subst=FORMATSTRING 替代不可转换的 Unicode 字符
|
|
--byte-subst=FORMATSTRING 替代不可转换的字节
|
|
--widechar-subst=FORMATSTRING 替代不可转换的宽字符
|
|
-s 不显示有关转换出错的信息
|
|
-l 列出支持的编码
|
|
--version 显示版本信息并退出
|
|
#使用:iconv -f ENCODING -t ENCODING INPUTFILE
|
作者:相遂
Linux--vim的使用相关推荐
- linux vim 可视块,linux vim的可视模式
linux vim的可视模式 由Linux系统中文网(Linux521.com)编辑收集整理,除Linux521注明原创文章外,其版权归原作者所有.如果您在学习中遇到问题欢迎在下面的评论中留言,我们会 ...
- linux vim 执行shell命令行,Linux中vim和shell
在Linux系统中一切皆文件,配置服务其实就是在修改其配置文件的参数,而在日常文件中肯定少不了的就是编辑文档,这就离不开vim,而vim之所以能够得到广大厂商的青睐与用户的认可,原因在于vim编辑器中 ...
- 撤销 恢复快捷键 Linux,Linux Vim撤销和恢复撤销快捷键用法详解
使用 Vim 编辑文件内容时,经常会有如下 2 种需求: 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子. 将文件内容恢复之后,经过仔细考虑,又感觉还是刚 ...
- Linux Vim显示行号方法详解
在使用 Vim 进行编辑的过程中,经常会遇到需要同时对连续几行进行操作的情况,这时如果每行都有行号提示,就会非常方便. 在命令模式下输入":set nu"即可显示每一行的行号,如图 ...
- Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解
通过前面的学习我们知道,Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器. 我们首选的文本编辑器是 Vim(至于为什么,可查看<Vi和Vim的区 ...
- Linux Vim基本操作(文件的打开和编辑)完全攻略(有图有真相)
<Vim三种工作模式>一节给大家详细介绍了 Vim 的 3 种工作模式,本节来学习如何使用 Vim 编辑文件. 首先学习如何使用 Vim 打开文件. Vim 打开文件 使用 Vim 打开文 ...
- linux vim 删除 h,Linux VIM 的使用快捷键之删除, 复制, 粘贴
Linux VIM 的使用快捷键之删除, 复制, 粘贴 注: 以下删除, 复制和粘贴均是在非编辑模式下的操作 (esc) 一, 删除 x 小写的 x 表示向后删除一个字符, 也就是删除光标所在字符 n ...
- linux vim命令_提升生产力的20大Linux Vim命令
linux vim命令 VIM or the Vi Improved text editor is one of the most advanced text editors available. L ...
- vim autoformat php,Linux Vim代码格式化/美化插件vim-autoformat安装
vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化.所以,安装vim-autoformat的同时,还需要安 ...
- Linux - vim 文本替换
Linux - vim 文本替换: 本文转载自:https://www.cnblogs.com/wind-wang/p/5768000.html 1. 替换当前行中的内容: :s/from/to/ ( ...
最新文章
- 《数学之美》第8章 简单之美--布尔代数和搜索引擎
- 笔记-信息化与系统集成技术-客户关系系统CRM
- [自学]Docker system 命令 查看docker镜像磁盘占用情况 Docker volume 相关
- 大厂架构师经验分享!成功跳槽字节跳动
- python整数转换字符串_Python | 将字符串转换为整数列表
- @经典微小说 因为爱
- vue webapp滑动事件_js_监听移动端web触屏事件_滑动响应
- go语言 gosched
- 《Java程序性能优化》、让你的Java程序更快、更稳定(PDF篇)
- java coap_CoAP协议-以Californium(Java)为例的CoAP初步实现
- SQL 数据库清理数据库日志
- 小白vba之批量数据整理(excel自动化入门)
- 彻底解决联想手机数据连接不能上网问题(无需恢复出厂设置) 本文来自移动叔叔论坛 ,详细出处请参考:http://bbs.ydss.cn/thread-201115-1-1.html
- 合宙air105上手记录
- 雷锋网特约专访易科成志创始人、CEO潘真
- office 打开wps乱_wps文档用word打开排版不对怎么办
- 当我亲身面对大数据杀熟的商家.....
- 子类方法中super.父类方法
- 学计算机学不会怎么办,怎样学习计算机编程
- 最近在玩微博,觉得微博学习到了一点东西,分享下
热门文章
- typedef的详细用法
- 【安全漏洞】CVE-2020-26567 DSR-250N 远程拒绝服务漏洞分析
- 设计模式C++实现(5)——原型模式、模板方法模式
- 异步I/O 设备内核对象,事件内核对象,可提醒I/O 接收I/O通知
- Python之网络图片爬取
- 1113 Integer Set Partition (25 分)【难度: 一般 / 知识点: 思维 贪心】
- 1001 A+B Format (20 分)【难度: 简单 / 知识点: 模拟】
- 3.2.3 页面置换算法
- Freemarker获取pojo属性
- 再见python你好go语言_再见Shell,你好Python