0%

vim排序文件内容

从Vim版本7开始,Vim内建排序命令可以使用。
这个指令在需要排序的时候还是蛮有用的。

比如按照姓名排序,按照学号排序等等。

Vim中排序文件内容如下所示:

1
:sort

文件内容的排序操作如下所示:

  • 按下v进入到可视化模式;
  • 使用箭头选择需要排序的多行;
  • 按下:,在Vim的底部它会显示:’<,’>’。
  • 在排序选择的最后增加!sort
1
:’<,’>!sort

:sort Vim命令还有下面一些可用的选项:

:sort选项 描述
:sort 以升序排序
:sort! 以降序排序
:sort i 忽略大小写
:sort u 删除重复行,u表示唯一
:sort! ui 也可以组合所有排序命令选项

逆序排列

要求

示例:将文本
1234
123
12
1
转换成
1
12
123
1234

命令

1
2
3
:g/.*/mo0
# 或者
:g/^/mo0

在Vim 加密解密文件

有些时候想玩点小把戏,比如加密一下编辑的文件。

1
:X

当你使用:X加密一个文件时,下一次打开这个文件,Vim会提示你输入加密关键词。

比如编辑文件hello.c,加密之前与之后的文件格式如下所示:

1
2
$ file hello.
hello.c: C source, ASCII text

加密后可以看到如下信息:

1
2
$ file hello.
hello.c: Vim encrypted file data

精准终止 之 kill

.. _linux-beginner-kill:

Linux kill 命令用于删除执行中的程序或工作。

官方含义为:

kill - send a signal to a process

kill 命令可将指定的信号发送给相应的进程或工作。 kill 命令默认使用的信号为15(SIGTERM),用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9(SIGKILL),强制杀死进程或作业。程序或工作的编号可利用 ps 指令或 jobs 指令查看。

语法

1
$ kill [option] <pid> [...]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。

所有可用的信号

使用 kill -l 命令列出所有可用信号。

1
2
$  kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

其中最常用的信号为:

  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。

几个实例

杀死进程

1
$ kill 12345

强制杀死进程

1
2
3
$ kill -KILL 123456
# 或者
$ kill -9 123456

那么如何kill某个用户的所有进程呢,比如用户为user,可以通过下面的命令执行:

1
2
3
$ kill -9 $(ps -ef | grep user) 
# 或者
$ kill -u user

Linux 之 kill 命令

Linux kill 命令用于删除执行中的程序或工作。

官方含义为:

kill - send a signal to a process

kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用的信号为15(SIGTERM),用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9(SIGKILL),强制杀死进程或作业。程序或工作的编号可利用 ps 指令或 jobs 指令查看。

语法

1
$ kill [option] <pid> [...]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。
  • [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

所有可用的信号

使用 kill -l 命令列出所有可用信号。

1
2
$  kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

其中最常用的信号为:

  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。

几个实例

杀死进程

1
$ kill 12345

强制杀死进程

1
2
3
$ kill -KILL 123456
# 或者
$ kill -9 123456

那么如何kill某个用户的所有进程呢,比如用户为user,可以通过下面的命令执行:

1
2
3
$ kill -9 $(ps -ef | grep user) 
# 或者
$ kill -u user

此man非man的意思

首先,这man是什么意思?

最开始很多人认为是不知道这个什么意思,找man呀。

其实man是manual的缩写,也就是手册的意思。

man命令提供了系统命令的详细帮助信息。

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。这个也是每个程序员必备的功能,在没有网络的情况下,man能解决很多问题和疑惑。

看一下官方定义:

Man - format and display the on-line manual pages

man 的格式

如果要读懂并使用man,首先需要了解man命令输出的格式,下面的几个是比较常用且需要注意的:

同时也可以使用man man 查看man的使用方法。

章节 含义
NAME 命令名称及功能简要说明
SYNOPSIS 用法说明,包括可用的选项
DESCRIPTION 命令功能的详细说明,可能包括每一个选项的意义
OPTIONS 每一选项的意义
EXAMPLES 一些使用示例

man的操作

比如输入man ls 后,跳出下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
LS(1)                                               User Commands                                              LS(1)

NAME
ls - list directory contents

SYNOPSIS
ls [OPTION]... [FILE]...

DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of
-cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.

-a, --all
do not ignore entries starting with .

-A, --almost-all
do not list implied . and ..

--author
with -l, print the author of each file

-b, --escape
print C-style escapes for nongraphic characters

--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576
bytes; see SIZE format below

-B, --ignore-backups
Manual page ls(1) line 1 (press h for help or q to quit)

此时可以通过空格键或者回车键来向后翻屏或者翻页,可以使用b或者k向前查看。

 查看关键词时可以使用:

/关键词 向后查找 n:下一个

?关键词 向前查找 N:前一个

可以通过q来退出。

ls后面还有一个(1),详细的解释可以参考《Linux 安装 man 帮助程序》

类似于whatis命令

man有个参数为-f,就是whatis的功能,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ man -f ls cd file cat more less
ls (1) - list directory contents
ls (1p) - list directory contents
cd (1) - bash built-in commands, see bash(1)
cd (1p) - change the working directory
cd (n) - Change working directory
file (1) - determine file type
file (1p) - determine file type
file (n) - Manipulate file names and attributes
cat (1) - concatenate files and print on the standard output
cat (1p) - concatenate and print files
more (1) - file perusal filter for crt viewing
more (1p) - display files on a page-by-page basis
less (1) - opposite of more
less (3pm) - perl pragma to request less of something

与whatis命令完全一致

类似于apropos命令

man有个参数为-k,就是apropos的功能,比如:

1
2
3
4
5
6
7
8
9
10
11
$ man -k  who
at.allow (5) - determine who can submit jobs via at or batch
at.deny (5) - determine who can submit jobs via at or batch
btrfs-filesystem (8) - command group of btrfs that usually work on the whole filesystem
docker-trust-signer (1) - Manage entities who can sign Docker images
ipsec_newhostkey (8) - generate a new raw RSA authentication key for a host
ipsec_showhostkey (8) - show host's authentication key
w (1) - Show who is logged on and what they are doing.
who (1) - show who is logged on
who (1p) - display who is on the system
whoami (1) - print effective userid

与apropos命令完全一致

使用man的小技巧

如果遇到一个不熟悉或者完全不知道的命令,此时可以通过下面的3个步骤来了解:

  1. 首先用man -k command 查询所有类似帮助文件信息,或许有可能就能找到你需要的信息;
  2. 然后man -f command 查询以command开始的相关帮助信息列表
  3. man N command 通过直接定位N获得详细帮助信息

man 系统帮助命令

首先,这man是什么意思?

最开始很多人认为是不知道这个什么意思,找man呀。

其实man是manual的缩写,也就是手册的意思。

man命令提供了系统命令的详细帮助信息。

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。这个也是每个程序员必备的功能,在没有网络的情况下,man能解决很多问题和疑惑。

看一下官方定义:

Man - format and display the on-line manual pages

man 的格式

如果要读懂并使用man,首先需要了解man命令输出的格式,下面的几个是比较常用且需要注意的:

同时也可以使用man man 查看man的使用方法。

章节 含义
NAME 命令名称及功能简要说明
SYNOPSIS 用法说明,包括可用的选项
DESCRIPTION 命令功能的详细说明,可能包括每一个选项的意义
OPTIONS 每一选项的意义
EXAMPLES 一些使用示例

man的操作

比如输入man ls 后,跳出下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
LS(1)                                               User Commands                                              LS(1)

NAME
ls - list directory contents

SYNOPSIS
ls [OPTION]... [FILE]...

DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of
-cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.

-a, --all
do not ignore entries starting with .

-A, --almost-all
do not list implied . and ..

--author
with -l, print the author of each file

-b, --escape
print C-style escapes for nongraphic characters

--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576
bytes; see SIZE format below

-B, --ignore-backups
Manual page ls(1) line 1 (press h for help or q to quit)

此时可以通过空格键或者回车键来向后翻屏或者翻页,可以使用b或者k向前查看。

 查看关键词时可以使用:

/关键词 向后查找 n:下一个

?关键词 向前查找 N:前一个

可以通过q来退出。

ls后面还有一个(1),详细的解释可以参考《Linux 安装 man 帮助程序》

类似于whatis命令

man有个参数为-f,就是whatis的功能,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ man -f ls cd file cat more less
ls (1) - list directory contents
ls (1p) - list directory contents
cd (1) - bash built-in commands, see bash(1)
cd (1p) - change the working directory
cd (n) - Change working directory
file (1) - determine file type
file (1p) - determine file type
file (n) - Manipulate file names and attributes
cat (1) - concatenate files and print on the standard output
cat (1p) - concatenate and print files
more (1) - file perusal filter for crt viewing
more (1p) - display files on a page-by-page basis
less (1) - opposite of more
less (3pm) - perl pragma to request less of something

与whatis命令完全一致

类似于apropos命令

man有个参数为-k,就是apropos的功能,比如:

1
2
3
4
5
6
7
8
9
10
11
$ man -k  who
at.allow (5) - determine who can submit jobs via at or batch
at.deny (5) - determine who can submit jobs via at or batch
btrfs-filesystem (8) - command group of btrfs that usually work on the whole filesystem
docker-trust-signer (1) - Manage entities who can sign Docker images
ipsec_newhostkey (8) - generate a new raw RSA authentication key for a host
ipsec_showhostkey (8) - show host's authentication key
w (1) - Show who is logged on and what they are doing.
who (1) - show who is logged on
who (1p) - display who is on the system
whoami (1) - print effective userid

与apropos命令完全一致

使用man的小技巧

如果遇到一个不熟悉或者完全不知道的命令,此时可以通过下面的3个步骤来了解:

  1. 首先用man -k command 查询所有类似帮助文件信息,或许有可能就能找到你需要的信息;
  2. 然后man -f command 查询以command开始的相关帮助信息列表
  3. man N command 通过直接定位N获得详细帮助信息

CTRL+A : 增加数量,将光标放置到vim编辑器上的数字上,然后使用CTRL+A,可以将该数值增加1
CTRL+X : 减少数量,将光标放置到vim编辑器上的数字上,然后使用CTRL+A,可以将该数值减少1

其实也可以在数字前面的字符上,可以自行验证一下。

打开光标下的文件

  • gf :在光标位于一个文件名上时,如果该文件就在当前目录,就可以打开该文件,但是会覆盖原来的文件;

当然,就算没有绝对路径,vim也可以打开一些文件,比如c头文件和perl模块

打开多个文件

使用vim file1 file2 file3….可以打开多个文件,但是同一时刻只能显示一个文件。

在一个session中,还可以使用:e anotherFile打开另一个文件。

在多个文件中,可以使用CTRL+^来切换,或者使用:next :previous来切换。

从Vim中访问Unix的函数帮助页

在Vim编辑器中,在你想阅读帮助(man)页的函数名上按K键。

K

为了访问其他章节的Man页按{n}K。例如,为了访问man页的第2章,执行下面命令:

2K

例如:sleep是一个命令,也是库中的函数,因此,C编程时你想查看它的man页,那么你需要使用3K。

让Vim智能的高亮你的代码

命令 描述
:syn on 打开语法高亮显示
:syn off 关闭语法高亮显示

注:Vim通过文件名的后缀来识别使用哪种编程语言的语法高亮的模版。