将Powershell的操作模式设置为Vi/Vim模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Powershell的操作模式设置为Vi/Vim模式相关的知识,希望对你有一定的参考价值。

参考技术A

所需模块

是否已经安装所需模块:
(Get-Module).Name | foreach if ($_ -eq "PSReadLine") echo $true
如果没有显示True则需安装 PSReadLine .
Install-Module -Name PSReadLine -Scope CurrentUser
默认保存在 $PSModulePath 下.

设置编辑器模式为Vi模式:
Set-PSReadlineOption -EditMode Vi .
如果想区分两种模式的光标:
Set-PSReadlineOption -ViModeIndicator Cursor

注意
如果你使用了oh-my-posh,则Vi模式的快捷键会有冲突,导致不能Tab预览。
解决方法就是将Vi模式下的 Tab 更改和oh-my-posh一样的 MenuComplete :
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete

最后,想永久生效,将设置写入 $profile .

centos7的网络设置

必备知识:linux下对文件的编辑操作 首先给出的是vi的基础  后面会有详细的远程连接Centos的方法

vi的基本概念
  基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),
  各模式的功能区分如下:
  1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
  2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
  3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。

进入vi的命令 
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 (这里的加号是真实输入)
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename....filename :打开多个文件,依次进行编辑 

移动光标类命令 
h :光标左移一个字符 
l :光标右移一个字符 
space:光标右移一个字符 
Backspace:光标左移一个字符 
k或Ctrl+p:光标上移一行 
j或Ctrl+n :光标下移一行 
Enter :光标下移一行 
w或W :光标右移一个字至字首 
b或B :光标左移一个字至字首 
e或E :光标右移一个字至字尾 
) :光标移至句尾 
( :光标移至句首 
}:光标移至段落开头 
{:光标移至段落结尾 
nG:光标移至第n行首 
n+:光标下移n行 
n-:光标上移n行 
n$:光标移至第n行尾 
H :光标移至屏幕顶行 
M :光标移至屏幕中间行 
L :光标移至屏幕最后行 
0:(注意是数字零)光标移至当前行首 
$:光标移至当前行尾 

插入文本类命令 (切换至命令模式方法:esc键 ->命令 -> 回车)
i :在光标前 
I :在当前行首 
a:光标后 
A:在当前行尾 
o:在当前行之下新开一行 
O:在当前行之上新开一行 
r:替换当前字符 
R:替换当前字符及其后的字符,直至按ESC键 
s:从当前光标位置处开始,以输入的文本替代指定数目的字符 
S:删除指定数目的行,并以所输入文本代替之 
ncw或nCW:修改指定数目的字 
nCC:修改指定数目的行

删除命令 
ndw或ndW:删除光标处开始及其后的n-1个字 
do:删至行首 
d$:删至行尾 
ndd:删除当前行及其后n-1行 
x或X:删除一个字符,x删除光标后的,而X删除光标前的 
Ctrl+u:删除输入方式下所输入的文本 

退出(保存或不保存退出)命令

 

:wq   强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

:x    写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

:q!  不保存文件并退出vi 

 

 

然后下面

 

 

在虚拟机上安装了CentOS 7,当时选择了最小安装模式,安装完成后马上用ifconfig查看本机的ip地址(局域网已经有DHCP),发现报错,提示ifconfig命令没找到。

[[email protected] ~]# ifconfig

-bash: ifconfig: command not found

首先,习惯性的输入echo $PATH(查看当前PATH环境变量,跟DOS的path命令一样的功能,注意Linux系统中的命令是区分大小写的),显示结果如下:

[[email protected] ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

从上面显示结果看,放置系统管理程序的路径/usr/sbin已存在,就是放外部命令的路径。直接用ls查看/usr/sbin/目录,也没看到ifconfig,怎么回事?

[[email protected] ~]# ls /usr/sbin/

我还是不死心,再用find命令也没找到ifconfig?

[[email protected] ~]# find / -name "ifconfig"

此时心里有底了,应该是用某个命令代替了ifconfig了。上百度一查,果不其然,已经用ip命令代替ifconfig命令了。下面列出ip命令常用参数。

 

ip  [选项]  操作对象{link|addr|route...}

# ip link show                # 显示网络接口信息
# ip link set eth0 upi           # 开启网卡
# ip link set eth0 down          # 关闭网卡
# ip link set eth0 promisc on      # 开启网卡的混合模式
# ip link set eth0 promisc offi     # 关闭网卡的混个模式
# ip link set eth0 txqueuelen 1200   # 设置网卡队列长度
# ip link set eth0 mtu 1400        # 设置网卡最大传输单元
# ip addr show                # 显示网卡IP信息
# ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
# ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址

# ip route list                 # 查看路由信息
# ip route add 192.168.4.0/24  via  192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
# ip route add default via  192.168.0.254  dev eth0    # 设置默认网关为192.168.0.254
# ip route del 192.168.4.0/24      # 删除192.168.4.0网段的网关
# ip route del default          # 删除默认路由


输入ip addr命令后,发现enp2s0网卡(这个enp2s0是我这里的网卡)没有ip地址。

[[email protected] ~]# ip addr

既然没有ip地址,那直接去/etc/sysconfig/network-scripts目录中看一下的网卡ip信息的配置文件名吧。

[[email protected] ~]# ls /etc/sysconfig/network-scripts/
ifcfg-enp2s0  ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases  ifup-ipv6   ifup-post    ifup-Team      init.ipv6-global
ifcfg-lo      ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-isdn   ifup-ppp     ifup-TeamPort  network-functions
ifdown        ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-plip   ifup-routes  ifup-tunnel    network-functions-ipv6
ifdown-bnep   ifdown-isdn  ifdown-sit     ifup             ifup-ippp     ifup-plusb  ifup-sit     ifup-wireless


从结果看,之前保存网卡ip信息的配置文件名也由以前的ifcfg-eth0变成了ifcfg-enp2s0,好吧,既然你给他命这么个名,那我就先用着。先cat一下ifcfg-enp2s0
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0
HWADDR=00:E0:69:01:6A:96
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp2s0
UUID=5b0a7d76-1602-4e19-aee6-29f57618ca01
ONBOOT=no

从上面的配置中有看到虽然BOOTPROTO=dhcp,但是ONBOOT=no,这里用vi将ONBOOT=no改成ONBOOT=yes,然后重启CentOS。

[[email protected] ~]# shutdown -r

重启完成后输入帐号和密码进入命令提示操作符继续用ip addr查看网卡信息。结果如下:
[[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:e0:69:01:6a:96 brd ff:ff:ff:ff:ff:ff
    inet 172.8.1.200/24 brd 172.8.1.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::2e0:69ff:fe01:6a96/64 scope link
       valid_lft forever preferred_lft forever

从上面结果看到,通过DHCP分配到的ip地址是172.8.1.200,虽然是测试机,但为了便于今后的远程连接,我们还是给这台机配置一个固定ip吧。

用vi打开ifcfg-enp2s0,输入以下参数,再用#将BOOTPROTO=dhcp注释。
IPADDR0=172.8.1.211
PREFIX0=24
GATEWAY0=172.8.1.1
DNS1=172.8.1.1

完整参数如下,好了,网络配通了。明天继续其它功能测试。
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0
HWADDR=00:E0:69:01:6A:96
TYPE=Ethernet
#BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp2s0
UUID=5b0a7d76-1602-4e19-aee6-29f57618ca01
ONBOOT=yes
IPADDR0=172.8.1.211
PREFIX0=24
GATEWAY0=172.8.1.1
DNS1=172.8.1.1

 

设置好虚拟机的ip地址后,我们就可以很方便的来远程连接操作虚拟机了

以上是关于将Powershell的操作模式设置为Vi/Vim模式的主要内容,如果未能解决你的问题,请参考以下文章

Powershell:为获取内容管道设置编码

Linux中的 VI/VIM的命令查询

(18)Powershell中的字符串拆分运算符

5. Linux的vi/vim使用及常用快捷键

如何在 PowerShell 中键入 TAB 字符?

vi/vim常规操作(持续更新)