Vim

简明 Vim 练级攻略

基础设置

  • 在vim界面点击“:”然后进行设置,但只会在当前vim界面生效;
  • 添加相关设置在vim配置文件(例如“/etc/vimrc”或用户目录的.vimrc文件),可以永久生效;
set ruler/noruler    # 显示/隐藏光标当前位置
set number/nonumber # 开启/关闭行号显示
set cursorline/nocursorline # 开启/关闭高亮当前行
set cursorcolumn/nocursorcolumn # 开启/关闭高亮当前列
set hlsearch/no # 开启/关闭高亮搜索结果
set wrap/nowrap # 开启/关闭换行
set laststatus=2 # 显示状态栏

基础操作

#  G       移动到全文的最后一行
# gg 移动到全文的第一行
# n<Enter> 光标向下移动n行
# 数字0或功能键Home 移动到行首
# 符号$或功能键End 移动到行尾
#
#
# dd 删除当前光标所在的行
# ndd 删除当前光标向下的n行
# yy 复制当前光标所在行
# nyy 复制当前光标向下的n行
# p, P 小写字母p将已复制的内容粘贴在当前光标的下一行,大写字母P则粘贴在上一行
# x, X 小写字母x向后删除一个字符, 大写字母X向前删除一个字符
#
#
# u 复原前一个动作
# . 重复前一个动作
#
#
# vim file1,file2,file3 同时打开多个文件
# :open file 在新窗口中打开文件
# :bn 切换到上一个文件
# :bp 切换到下一个文件
#
#
# /word 光标之下寻找word字符串;n搜寻下一个,N搜寻上一个。
# ?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,替换前需要用户确认
#
#
# :n1,n2 w <file> 将n1到n2行的内容保存到文件
# :r <file> 将文件内容添加到光标所在行之后
# :! <command> 暂时离开vim在指令列模式下执行外部命令并显示结果

01 - 移动光标到指定行

  1. 在命令模式下输入“:n”;
  2. 在编辑模式下输入ngg或者nG,n为指定的行号。不指定行号,“gg”和“G”分别表示文档首行和尾行。
  3. 打开文件跳转到指定行:“vim +n ”
  • 查看当前光标所在的行,编辑模式下按“Ctrl+g”键;
  • 显示行号,在命令模式下输入“:set number”;

02 - 自动添加Shell脚本的作者和版权信息

在用户目录的.vimrc文件中,添加如下内容并保存

map <F4> :call TitleDet()<cr>
function AddTitle()
call append(0,"\#!/bin/bash")
call append(1,"############################################################")
call append(2,"# File Name : ".expand("%:t"))
call append(3,"# Version : 1.0.0")
call append(4,"# Function : test")
call append(5,"# Author : Anliven")
call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
call append(7,"# Blogs : https://www.cnblogs.com/anliven")
call append(8,"# GitHub : https://github.com/anliven/L-Shell")
call append(9,"# Description : L-Shell")
call append(10,"############################################################")
echohl WarningMsg | echo "Successful in adding copyright." | echohl None
endf function UpdateTitle()
normal m'
execute '/# Last modified/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# Filename/s@:.*$@\=":\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copyright." | echohl None
endfunction function TitleDet()
let n=1
while n < 10
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile
call AddTitle()
endfunction

编辑脚本时,在norm 模式下按F4键即可,效果如下

#!/bin/bash
############################################################
# File Name : tt.sh
# Version : 1.0.0
# Function : test
# Author : Anliven
# Last modified: 2017-08-15 23:51
# Blogs : https://www.cnblogs.com/anliven
# GitHub : https://github.com/anliven/L-Shell
# Description : L-Shell
############################################################

如果shell文件名发生更改,只需在编辑时重新按F4键即可自动更新相关信息。

注意F4是否和其它快捷键设置冲突。

03 - 同时查找两个关键字

利用正则表达式:

\(stringA\|stringB\).*\(stringB\|stringA\)

\( -----> “\”为转义字符,转义“(”

stringA -----> 字符串A

\| -----> “\”为转义字符,转义“|” 。(a|b)的意思是a或者b。

stringB -----> 字符串B

\) -----> “\”为转义字符,转义“)”

.* -----> "."为除换行符外的任意字符。"*"为0次或者多次。

Tools - Vim的更多相关文章

  1. [Tools] Vim插件管理

    我们在使用插件的时候,都不希望插件安装的很杂乱,它不是一个看不见的黑盒,也为了下次方便在其它地方安装. 由于要方便插件管理,于是有了 Vundle,以下做些介绍: 1. 一个插件管理器, 自己本身也是 ...

  2. vim 学习记录

    VIM中PHP代码使用tab键自动完成 更新于 2013-01-18 05:47:55UEANER 目录结构 $ tree -C ~/.vim | grep -v ".cnx" | ...

  3. VIM学习一: VIM命令学习及插件介绍

    一.光标移动及编辑命令(含查找替换) [打开关闭窗口] :e file或:open file       打开新文档 :q或者ctrl+w+q         关闭当前视图的窗口 :tab split ...

  4. [20190920]完善vim调用sqlplus脚本.txt

    [20190920]完善vim调用sqlplus脚本.txt --//以前写的http://blog.itpub.net/267265/viewspace-2140936/=>[20170617 ...

  5. vim、gvim 在 windows 下中文乱码的终极解决方案

    vim.gvim 在 windows 下中文乱码的终极解决方案 vim ~/.vimrc 然后加入: " Gvim中文菜单乱码解决方案 " 设置文件编码格式 set encodin ...

  6. centos7系统下安装nodejs开发环境

    1)安装基础工具(if not exists) yum install -y net telnet tools vim wget ntp 2)同步系统时间(if necessary) ntpdate ...

  7. httpd服务访问控制

    客户机地址限制 通过配置Order.Deny from.Allow from 来限制客户机 allow.deny :先"允许"后"拒绝" ,默认拒绝所有为明确的 ...

  8. 部署Apache网站访问统计-AWStats分析系统

    环境根据:http://www.cnblogs.com/zzzhfo/p/5925786.html 1.安装AWStats软件包 将软件包解压到httpd服务器中的/usr/lcoal/目录下 [ro ...

  9. zabbix监控超详细搭建过程

    监控及zabbix 目录: 1       监控分类... 1 1.1        硬件监控... 1 1.2        系统监控... 2 1.3        网络监控... 3 1.4   ...

随机推荐

  1. html css col-md-offset

    有的时候,我们不想让两个相邻的列挨在一起,这时候利用栅格系统的列偏移(offset)功能来实现,而不必再定义margin值.使用.col-md-offset-*形式的样式就可以将列偏移到右侧.例如,. ...

  2. Linux终端命令

    一.文件目录类 1.建立目录:mkdir 目录名2.删除空目录:rmdir 目录名3.无条件删除子目录: rm -rf 目录名4.改变当前目录:cd 目录名 (进入用户home目录:cd ~;进入上一 ...

  3. 交叉编译sudo

    编译Sudo version 1.8.6p7下载路径:https://www.sudo.ws/news.html 1.交叉编译 # tar -xvf sudo-1.8.6p7.tar.gz # cd ...

  4. Centos7 进入单用户模式,修复系统

    一.开机时进入如下界面,(按下方向键盘,阻止系统自动继续) 按e键出现下面界面 按方向键下,定位到最后,找到“ro”一行,ro的意思是read only,将“ro”替换成 rw init=/sysro ...

  5. 原生JS实现图片预览功能

    html代码: <div class="album-new fr"> <div class="upload-btn btn-new container& ...

  6. 过滤器(Filter)与拦截器(Interceptor)区别

    过滤器(Filter)与拦截器(Interceptor)区别 过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途 ...

  7. 代码之髓读后感——容器&并发

    容器 单个地址存放单个数据,但是如果有多个数据,而这些数据互相关联,则我们更希望的是将他们能够更好的在内存中组织在一起.于是便出现了容器的概念. 在不同的语言中,容器的名称不同,性质各异.比如,C 语 ...

  8. Node.js web发布到AWS ubuntu 之后,关闭Putty,Node 项目也随之关闭的解决办法

    最近公司把BlockChain和对应的Node Web都发布到了AWS 的ubuntu 系统上. 但是遇到了一个问题,每次启动 Node Web之后,关闭Putty,Node Web也随之关闭. 由于 ...

  9. Luogu3587[POI2015]POD - hash + 单调队列

    Solution 还是去看了题解. 感谢大佬的博客→  题解传送门 是一道思路比较新的题. 搞一个前缀和, 记录前 $i$ 个位置每种颜色的出现次数, 如果位置 $i$ 是 颜色 $a[i]$ 的最后 ...

  10. 移动端web轮播图插件swiper,功能很强大

    使用方法示例: <div class="swiper-container"> <div class="swiper-wrapper"> ...