Linux命令与Vim操作问答

53、12. 假设一个文件的权限允许你写入该文件,但不允许你删除它。a. 给出一个不调用编辑器来清空文件的命令。b. 解释你为何可以有修改文件的权限却没有删除文件的权限。

a. 可以使用命令 > 文件名 来清空文件,例如 > example.txt

b. 文件的删除权限通常由文件所在目录的写权限控制,而修改文件的权限由文件本身的写权限控制。如果用户对文件有写权限,但对文件所在目录没有写权限,那么用户就可以修改文件内容,但无法删除该文件。

54、为什么noclobber变量不能保护你在使用cp或mv命令时覆盖现有文件?

noclobber 仅能防止通过重定向覆盖文件,而不能阻止使用 cp mv 覆盖文件。 cp mv 工具包含 -i (交互式)选项,可在你尝试覆盖文件时验证你的意图,从而帮助你避免此类错误。

55、创建一个名为answer的文件并执行以下命令:$ > answers.0102 < answer cat。解释该命令的作用和原因,更传统的表达方式是什么?

该命令尝试将文件 answer 的内容通过标准输入传递给 cat 命令,并将 cat 命令的输出重定向到文件 answers.0102 中。不过命令格式有误,正确格式应该是:

cat < answer > answers.0102

更传统的表达方式就是直接用 cat 命令从输入文件读取内容并输出到目标文件,即:

cat answer > answers.0102

56、如何使vim进入输入模式?如何使vim恢复到命令模式?

要使 Vim 进入输入模式,按 i (在光标前插入)键或 a (在光标后追加)键;要使 Vim 恢复到命令模式,按 ESCAPE 键。

57、哪个命令可以将所有出现的“this week”替换为“next week”?

可以使用替代修饰符的全局替换语法:

!!:gs/this week/next week/

或者使用快速替换形式:

^this week^next week^ (可省略最后一个 ^

58、考虑以下场景:你启动 vim 编辑一个现有文件。你对文件做了很多修改,然后意识到在编辑会话早期删除了文件的一个关键部分。你想找回该部分,但不想丢失其他所有修改。你会怎么做?

若删除关键部分后执行了其他 vim 命令,无法用撤销命令恢复时,可使用 "1p 命令将最近删除的文本块粘贴到光标位置下方。

若删除了多个文本块且要找回特定的一个,先使用 "1p 粘贴第一个缓冲区的内容,若不是所需文本,用 u 撤销粘贴操作,再用 . 命令重复上一个命令,依次尝试九个编号缓冲区。

59、命名缓冲区与通用缓冲区有何不同?

与通用缓冲区不同,除非你发出专门覆盖该缓冲区内容的命令,否则 Vim 不会改变命名缓冲区的内容。Vim 编辑器在整个编辑会话期间都会保留命名缓冲区的内容。

60、假设你的vim版本不支持多次撤销命令。如果你删除了一行文本,然后删除了第二行,接着又删除了第三行,你会使用哪些命令来恢复你删除的前两行文本?

可以使用 1p 粘贴最近一次删除的文本,若该文本不是所需的,用 u 撤销粘贴操作,再用 . 命令,它会粘贴下一个缓冲区( 2 )的内容,若还不是所需的,重复 u . 操作,依次类推,直到恢复前两行删除的文本。

61、哪个命令可以将光标移动到当前段落的末尾?能否使用此命令以段落为单位在缓冲区中移动?

`META - }` 命令可以将光标移动到当前段落的末尾。可以使用此命令以段落为单位在缓冲区中移动,只需在该命令前加上重复计数(`CONTROL - U` 后跟一个数字参数)即可。

62、在处理一个段落一段时间后,很可能有些行变得太短,而有些行变得太长。是否有一个命令可以“整理”段落,而无需手动重新断行?

可以使用 META-q 来重新填充当前段落,或使用 META-x fill-region 来重新填充区域(点和标记之间)中的每个段落。

63、如何交换两个单词的位置?

可以使用META - t命令,该命令能将光标前的单词与光标后的单词进行交换。

64、给定一段文本,其第2行和第3行顺序颠倒了。你能想到多少种仅使用键盘来纠正这种情况的方法?

可以使用以下两种方法:

  1. 移动光标到第2行开头,输入 CONTROL - U 2 CONTROL - K 来剪切两行,移动光标到目标位置(此处应是第3行原本位置),输入 CONTROL - Y 粘贴;
  2. 移动光标到第2行开头,输入 CONTROL - U 2 CONTROL - K CONTROL - Y 来剪切并立即粘贴回两行,移动光标到目标位置,输入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值