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 - 移动光标到指定行
- 在命令模式下输入“:n”;
- 在编辑模式下输入ngg或者nG,n为指定的行号。不指定行号,“gg”和“G”分别表示文档首行和尾行。
- 打开文件跳转到指定行:“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(": %Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# Filename/s@:.*$@=": ".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*LastsmodifiedS*.*$'
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次或者多次。