大家好,又见面了,我是你们的朋友全栈君。
听说大部分的搞网络或者被网络搞的同学,每天都会使用SecureCRT在Linux下进行开发、测试等工作。
正所谓“工欲善其事,必先利其器”,一个趁手的开发环境对工作效率的提升是不言而喻的。
我在这里简单介绍一下个人在日常使用中积累下来的常用设置及操作,希望对不熟悉的朋友能有一点点参考作用,一家之言,欢迎拍砖。
【SecureCRT篇】
1、 自动登录服务器
如果我们需要经常登录固定某一台服务器,可以使用SecureCRT的自动登录功能,避免每次都要输入密码的麻烦。
打开SecureCRT,选择需要登录固定IP的会话,选择Property – Session Option – Logon Scripts,勾选 Automate logon,配置提示符及出现提示符时要发送的交互命令,便可实现自动登录。
还有另外一种方式即通过VBS脚本可以实现自动登录,这里不再赘述。
2、 记录SecureCRT打屏日志
服务发布或有重要操作时,我们想要保存操作记录怎么办,全部选中然后复制粘贴吗?其实我们可以通过SecureCRT的Log Session功能实现。
打开SecureCRT会话,选择 File – Log Session,然后选择本地日志文件即可。
如果要停止日志记录,取消勾选即可。
3、 文件上传下载
想在服务器和本地互相交换文件?可以使用SecureCRT提供的Xmodem/Zmodem功能,通过rz/sz命令实现文件发/送接收功能。
本地文件路径可以通过SecureCRT设置,如下图示:
4、 反空闲
长时间离开座位连接自动断开?可以使用SecureCRT的反空闲功能,定期自动发送指定字符串,以保持与服务器端的连接。
SecureCRT支持\r、\n、\b、\e、\t、\v、\p等转义字符,建议使用\e。
5、 模拟终端类型
程序代码无法高亮或自动着色?试试改一下终端类型吧,通过修改终端类型,会改变终端输出时的显示风格,对应环境变量为$TERM。
【自定义设置篇】
1、 快速登录服务器
平时开发及测试工作中,经常需要登录固定的一些服务器,每次都要输入IP、用户名、密码会不会太麻烦了?
这里可以使用一个简单的登录脚本即可通过配置快速访问服务器,脚本可设置默认端口、用户名、密码,方便指定IP直接登录。
2、 快速加载自定义环境变量
很多同学喜欢在服务器上自定义个性化环境变量,但考虑到大部分同学共用同一登录用户,为了不影响别人使用,我们是不是要在每台机器上保存一个profile文件?
其实可以不用在每台机器上保存profile,我们可以借助一个HTTP服务达到目的。我们把profile文件保存在一个Web服务器上,然后使用SecureCRT的键盘映射功能,把下面字符串映射到任一快键键(比如F8):
cd /tmp && wget -qO – http://127.0.0.1/cgi-bin/env.cgi > .zebralrc && source .zebralrc; rm -rf .zebralrc;clear\n
在登录任一台服务器之后,只要按一下快捷键便可以自动设置自定义环境变量了。
注:自定义环境变量也可以在自动登录时通过expect交互输入,但自定义内容较多时expect偶尔会出现字串丢失的问题,多试几次通常就可以解决。
3、 用好快捷键映射
经常需要在终端下输入相同的内容比如用户名或密码?这时候可以使用SecureCRT的快捷键映射功能,通过映射一键输入指定字串。
4、 使用命令别名
对于常用的命令,尤其是输入参数较多的时候,可以通过alias别名简化输入。同时,使用别名也可以起到容错的作用。
5、 自定义函数
通过自定义函数,可以方便地执行一些例行性的命令组合以提高效率。这里以通过进程ID查询启动时间、工作目录、路径、及启动参数为例:
6、函数组合
通过函数组合,可以方便地把多个自定义函数串联起来,实现更为强大的功能。这里以重启包含指定关键字的进程以及查看进程启动时间为例:
【文本编辑篇】
1、 VIM基本操作
VIM的基本操作,主要包括下面几方面:
1、文本编辑:移动、插入、替换、删除、查找、列模式等。
2、文件操作:新建、打开、保存、退出等。
3、代码辅助:语法高亮、代码格式化、标识符定位、taglist等。
4、其 它:多窗口、行折叠、多文件操作等。
以上操作都是基本功,不再赘述。
2、 键盘映射和自定义函数
通过键盘映射,VIM可以定义自己的快捷键以提高输入效率。比如C++程序员可以通过下面映射添加行注释,类似于Eclispe的Ctrl+/功能:
map <F1> :s/^[ ]\{,2\}/\/\//<CR>
使用VIM的自定义函数,则可实现更为强大的功能。如下面函数实现一键保存光标所在行内容到文件的功能:
func! SaveLine()
normal yy
exe ‘:!echo ‘.substitute(@0,”\n”,””,””).’>>/tmp/line.txt’
endfunc
map <F1> :call SaveLine() <CR> <CR>
3、 使用插件
VIM之所以被称为编辑器之神,和其强大的插件支持分不开的。这里介绍两个比较有用的插件,supertab和taglist,前者用于TAB键自动补齐,后者可以显示变量及函数列表。
4、 文件对比
VIM支持强大的文件对比功能,可以支持同时对比多个文件,快速消除异同,动态更新等。几个有用到的命令如下:
do 覆盖当前文件所在行以消除异同,即diff obtain
dp 用当前行覆盖对比文件以消除异同,即 diff put
diffupdate 更新文件异同
5、 调用外部程序
VIM可以使用!(即半角叹号)命令调用外部程序对正在编辑的文件进行处理,比如使用!xxd命令可以通过十六进制查看当前编辑区文件。
6、 强大的正则式
VIM支持强大的正则式功能,比如使用下面命令可以替换中文字符:
%s/\([^\x00-\xff]\+\)//g
再比如下面命令可以实现简单的列交换:
%s/^\(.*\)\s\+\(.*\)\s\+\(.*\)$/\1 \3 \2/g
正则式的强大无须多言,VIM的正则式如果用好了,无论是编辑文字还是调试代码都会便捷到让你惊艳。
【附VIM常用命令】
本节列出本人使用vim过程中用到的常用命令,针对默认设置下的VIM生效,在某些自定义设置下可能不适用)
CTRL-[ 进入普通模式(此模式为VIM默认模式)
: 普通模式下按冒号可进入命令模式
i 普通模式下按 i 进入编辑模式
命令行模式
q 退出文件
qa[ll] 即出所有 vim 缓冲区。同理有:xa[ll],:wqa[ll]等
q! 强制退出文件
w 写入文件
w! 强制写入文件
wq 写入并退出
w file 写入文件file
r file 读入文件file
set ic 即 set ignore case,在查找时忽略大小写
set noic 即 set noignorecase 使之大小写敏感
script 列出当前VIM所用到的配置文件,全称为scriptname
syntax 列出当前文件类型已定义的语法项
syntax on 启用语法高亮,类似syntax enable
syntax off 关闭语法高亮
syntax clear 清除已有语法高亮规则
set tabstop=4 设置TAB键为四个空格, 可简写为set ts=4
set cmdheight=3 设置VIM窗口底部命令行的调度,默认为1
set fileformat=unix 设置当前文件格式为unix, 可简写为ff
set filetype=cpp 设置当前文件类型为cpp, 可简写为ft
set list 设置制表符以^I显示,行尾会有$字符
set iskeyword 定义VIM的WORD字符集。 简写为set isk
set nolist 与上面相反,不再显示制表及换行
set nowrap 不允许自动换行
set wrap 与上面相反,启用自动换行功能
set autowrite 打开自动存盘功能
set noautowrite 关闭自动存盘功能
set autoindent 启用自动缩进,可简写为set ai
set noautoindent 取消自动缩进.
set backup 文件保存时会生成一个备份文件
set backupext=.bak 修改备份文件名的后缀为.bak,默认为~
set nobackup 关闭自动备份功能.
set number 在每一行前显示行号
set nonumber 在行前不显示行号
set hls 显示查找高亮
set nohls 取消查找高亮
设置色彩显示
set background=dark 使用暗色背景,简写为bg
set background=light 使用亮色背景
colorscheme evening 设置颜色方案
syntax clear 暂时关闭语法高亮,仅对当前文件生效
syntax off 关闭语法高亮,对所有文件生效。
syntax manaul 暂时启动语法高亮,仅对当前文件生效
syntax on 打开语法高亮,对所有文件生效
查看帮助
help command 可查看关于命令command的详细信息
set command& 恢复选项command的默认值
进入编辑模式
i 光标前编辑
I 光标置于当前行的第一个非空白字符处并进入编辑模式
a 在光标后编辑
A 在行尾编辑
o 在光标所有行下行开启新行并编辑
O 在光标所在行上行开启新行并编辑
s 删除当前光标所在字符后编辑
S 删除当前行(不包括行前空白)后编辑
光标的移动和删除
h 左
j 下
k 上
l 右
H 屏幕左上角非空白处
M 屏幕中间非空白处
L 屏幕左下角非空白处
w 右移下一个字的开始处
W 同上,不过以空白区分字(word)
e 移到所在字的末端
E 同上,不过以空白区分字(word)
b 移到上一个字的开始处
B 同上,不过以空白区分字(word)
gg 文件首
G 文件尾
} 跳到下一个空行处
{ 跳到前一个空行处
x 删除光标所在字符
X 删除光标前的字符
0 行前
^ 行前非空白处
$ 行尾
d 删除指令,可与其它指令组合。
dw 删除一个字(从字的光标位置删除到字尾,包括字后空白)
daw 删除一个字(从字首删除到字尾,包括字后空白)
diw 删除一个字(从字首删除到字尾,不包括字后空白)
d0 删至行首
dd 删除当前行
D 删除到行尾
与数字组合
50l 向后移50个单元
d5w 删除后面5个字
dL 删除到屏幕底端
100gg 跳到文件第100行
100G 同上
其它指令
K 查找当前字的man页,相当于执行!man <cword>,
. 重复上一个改变,包括插入,删除,或替换操作
u 撤销
% 当光标位于小中大括号时, 移动到小中大括号相对应的左右括号
J 把下一行连接到当前行, 实际操作为删除当前行的换行符
= 重新排版指令, 如=% , =L等等
>> 向右缩进, 3>>
<< 向左缩进
CTRL-f 向前翻页(即光标向下移动)
CTRL-b 向后翻页(即光标向上移动)
CTRL-u 向后滚动半屏
CTRL-d 向前滚动半屏
zz 使当前位置成为屏幕的中间
[I 显示包含当前字的所有行
跳来跳去的标签
m 标签指令,
mx 把当前位置标为x , x可为 a-zA-Z
‘x 跳至标签为x所在行的行首非空白处
`x 跳至标签为x所在行标签时的位置
文本选择
v 按行选中,以单元为单位,可以组合使用:v%,vL,v$
V 按行选中,以行为单位
CTRL-v 按列选中
选中后可进行操作
u 转成小写
U 转成大写
y 拷贝
> 向右缩进
< 向左缩进
复制(yank)与粘贴(paste)
y 拷贝指令,拷贝选定内容到缓冲区
Y 拷贝指令,拷贝当前行的内容到缓冲区
p 粘贴指令,粘贴由x, X, d, D, y引起的缓冲区
P 粘贴指令,不同的是p把缓冲区内容放在当前光标之后
yy 拷贝当前行
y4j 拷贝当前行和后 4 行
y`a 拷贝至标签a, 以行为单位
y’a 拷贝至标签a, 以字符为单位
2p 粘贴2次
xp 对换当前字符和下一字符
ddp 对换当前行和下一行
字符替换
rx 把当前字符替换为x, x为任意字符
R 替换n个字符, 直到按Esc或^[为止
全局命令
:global 找到符合匹配模式的行执行命令于其上
格式为:[range]global/{pattern}/{command},可简写为g
字串查找
/ 向后查找
? 向前查找
* 向后查找光标所在字
# 向前查找光标所在字
n 下一个
N 上一个
文件及位置信息
CTRL-g 当前文件信息
g CTRL-g 当前位置信息
记录和重复操作
q 记录指令
@ 重复操作指令
qx…q x为a-zA-Z, …表示一系列的操作, 最后的q表示结束
@x 重复标签为x的记录, n@x表示重复n次
区域无关指令
像h, j, k, l ^F ^B这些基本的光标移动指令和m等等
区域相关指令
d y = 这一类的操作与当前光标和最后的光标有关
> < u U 指令在选中块之后使用
多行折叠
zf 后加移动指令, 就能折叠这个区域, 如zf%,zfG等等
zo 打开折叠
快速移动
^F ^B w W % 30j 等
/ ?
fo 移到当前行中当前位置之后第一个字符o的位置
Fo 移到当前行中当前位置之前第一个字符o的位置
大小写转换
~ 大小写互换
g~~ 把该行的大小写互换
guu 把当前行换成小写
gUU 把当前行换成大写
gUw 把当前光标位置一直到当前字结束换成大写
编辑模式
CTRL-p 自动补全,或CTRL-n
CTRL-[ 进入c-mode模式
字串替换
:%s/a/b/g 把文件当中的所有的a换成b
选项g可以使用全文替换
选项c可以强制在每次替换前要求确认
选项i可以使查找被替换对象时忽略大小写
外部命令
:! cmd 执行命令cmd
:sh 暂时退出vim, 执行$SHELL
CTRL-z 把当前程序,如VIM,挂到后台
fg 把位于栈顶的后台程序调至前台
使用TAG
CTRL-] 跳至该tag处
CTRL-t 返回
g] 显示该tag信息
语法高亮
使用:syntax on就能够激活语法高亮显示了, 如果还没有显示颜色
使用不同颜色方案: colorscheme default
对码农比较有用的一些东东
—————————————–
ctags * 为当前上当下所有文件创建tags文件.
CTRL-] 跳到目标tag处
CTRL-t 跳到前一次tag处
CTRL-w ] 分隔窗口并跳到目标tag处
” 返回上一次光标停留处
[I 查找全局标识符
[D 只查找#define定义的标识符,其它同[I
gD 查找局部标识符,只查找当前文件
gd 查找局部标识符,只查找当前函数
[# 跳到#if …#else #endif的开始元素
]# 跳到#if …#else #endif的结束元素
[[ 移动到一个代码块的开头
][ 移到到一个代码块的结尾
[{ 跳到当前代码块的开头,会跳过与它平级的代码块
]} 跳到当前代码块的结尾,跳过与它平级的代码块
[m 光标在类中时可找到前一个函数的开始
]m 光标在类中时找到下一个函数的结尾
[] 向后查找一个函数的结尾,函数的结尾以第一列出现}为标志
]] 向前查找一个函数的开始
% 在(),[],{}之间移动
[( 类似于[{,不过工作于()而不是{}
]) 类似于]},不过工作于()而不是{}
ga 显示光标处的字符编码信息
【结束语】
上面简单列举了个人工作过程中在Linux下的常用操作及设置,权做抛砖,欢迎各位同好交流指正。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137295.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...