我有两台不同的机器(家庭和工作)运行 Ubuntu 18.04。昨晚vim
在家里冻僵了。我处于插入模式并打字,然后去保存 ( esc :w
) 并且什么也没发生。状态栏仍然显示-- INSERT --
,光标仍在原处闪烁。我卡住了。我找不到出路。我不能打字(我打字时什么也没发生),我不能四处走动(向上和向下箭头什么也没做)。它卡在插入模式,光标在原处闪烁。
我肯定是同时处理多项任务,并且可能在那里敲了一些其他键,但我不知道是什么键。不过已经很晚了,所以我关闭了终端窗口并再次尝试(我正在输入 git commit 消息)。它在我打字的中途再次发生,所以我改用了git commit -m "don't need an editor for this"
。然后我关闭了我的电脑并停止工作。
我想我只是累了,但今天我在另一台笔记本电脑上工作时发生了这种情况。我再次处理多项任务,不能发誓我没有输入任何奇怪的键序列,但如果我这样做是偶然的。同一终端中的其他选项卡不会被冻结。
我习惯于visual
在 vim 中陷入模式。这是我学到的一个技巧。但卡在插入模式?关于我可能做了什么以及如何摆脱它的任何想法?
根据我尝试查看的评论建议,.viminfo
但.viminfo
我看到的唯一内容仅由以下内容拥有,root
并且似乎只显示我会编辑的内容sudo
:
# Input Line History (newest to oldest):
# Debug Line History (newest to oldest):
# Registers:
# File marks:
'0 1 0 /etc/neomuttrc
|4,48,1,0,1531789956,"/etc/neomuttrc"
'1 1 66 /etc/apt/sources.list.d/signal-bionic.list
|4,49,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
'2 51 0 /etc/apt/sources.list …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一堆 PDF 编译成一个文档。ls
显示文件位于我所在的目录中并且它们是可读的 ( -rw-r--r--
)。但是当我尝试运行时pdftk 2017.pdf cat output test.pdf
出现错误:
Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: 2017.pdf (Permission denied)
at gnu.java.nio.channels.FileChannelImpl.open(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.<init>(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.create(libgcj.so.16)
at java.io.RandomAccessFile.<init>(libgcj.so.16)
at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Error: Failed to open PDF file:
2017.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Run Code Online (Sandbox Code Playgroud)
如果我向该操作添加更多文件,我只会收到每个文件的错误。
我可以从命令行重命名 PDF,但mv 2017.pdf foo.pdf
出现相同的错误。Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: foo.pdf (Permission denied)
如果我尝试调用一个不存在的文件,例如。 pdftk 123.pdf cat output test.pdf …
借助xterm 标题栏中的Display 命令,我gnome-terminal
更改了标题以反映正在运行的命令,以便我可以看到 Mutt 正在哪个终端运行它。但我真正想要的是将我的 Mutt 状态提升到冠军头衔。我有这个.muttrc
:
set status_format = "%n new | %M in %f [%v]."
Run Code Online (Sandbox Code Playgroud)
我很想把整个状态推到我的gnome-terminal
头衔上。有没有办法在我的.bashrc
?还是另一种方式?
在http://vim.wikia.com/wiki/Automatically_set_screen_title上有关于如何在 vim 中执行此操作的讨论,但是...那是 vim。
所以我目前正在使用wget
windows 10 powershell 上的命令来下载各种文件。但是,在测试此命令时,实际上并未下载文件。
例如,假设我想下载一个图像,比如https://picsum.photos/200,我将使用以下命令:
PS C:\Users\myname\Desktop> wget https://picsum.photos/200
返回一个明显成功的结果:
StatusCode : 200
StatusDescription : OK
Content : {255, 216, 255, 224...}
RawContent : HTTP/1.1 200 OK
Access-Control-Expose-Headers: Content-Length
Content-Disposition: inline;filename=""
Vary: Origin
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-XSS-Protection...
Headers : {[Access-Control-Expose-Headers, Content-Length], [Content-Disposition, inline;filename=""],
[Vary, Origin], [Access-Control-Allow-Origin, *]...}
RawContentLength : 31273
Run Code Online (Sandbox Code Playgroud)
此过程完成后,我不会在桌面上观察到任何新文件。
但是,此代码确实有效:
wget https://picsum.photos/200 -O image.jpg
Run Code Online (Sandbox Code Playgroud)
那么发生了什么?为什么wget
单独不下载文件?
一段时间以来,我发现当我尝试在浏览器中查看 HTML 文件时(来自 Mutt,v要查看所有附件,请选择text/html
附件和enter)我的浏览器会打开一个新选项卡,file:///tmp/mutt.html
但始终显示
文件未找到
Firefox 无法在 /tmp/mutt.html 中找到该文件。
检查文件名的大小写或其他输入错误。检查文件是否被移动、重命名或删除。
我不太确定如何解决这个问题。它运行良好,直到它没有。然后只是为了让我每 10 次或 12 次保持警惕,它会随机显示 HTML 邮件。
比如刚才,我...
/var/log/
查看是否有明显的日志文件要查看tail -f /var/log/syslog
所以......我应该在哪里寻找一些指示为什么mutt html消息有时在浏览器中打开得很好而有时/tmp/mutt.html
找不到?
我知道如何加载特定的终端配置文件以及加载终端读取的配置文件,但是每次我尝试设置标题并保存配置文件时,它仍然返回默认值。
我只能更改该会话的窗口标题,并且只能在菜单中使用。如果我尝试gnome-terminal --title="MyTerminal"
这样的操作会弹出一个终端,但标题仍然是默认的。
如何从命令行和配置文件中更改标题?
默认情况下,Mutt 希望按发件人名称将邮件归档到文件夹。所以当我点击s它时会提示我Save to mailbox ('?' for list): =sendername
。我想让它默认为=INBOX.Archives.2015
。
我不认为我需要一个宏,这就是解决这个问题的方法:mutt: save message to specific folder
我只想设置一个默认值,这样提示总是=INBOX.Archives.2015
(我可以每年重置一次,年份不需要更新。)
经过多年的 Thunderbird 并被 gpg 难倒,我正在慢慢迁移到 mutt。默认情况下我有 Mutt 签名消息,但我没有被要求输入密码,然后消息失败:
gpg: can't query passphrase in batch mode
gpg: skipped "53453F2E": bad passphrase
gpg: signing failed: bad passphrase
Press any key to continue...
Run Code Online (Sandbox Code Playgroud)
如果需要密码来签署消息,我如何让 Mutt 向我询问密码?
我想mutt
(mutt-kz
实际上 - 我很想迁移到,neomutt
但这是一个更大的项目)从中获取我的 SMTP 密码,pass
所以我不必将它以明文形式存储在我的配置文件中,但我不是确定如何将密码正确传递到我的.muttrc
.
这就是我所拥有的.muttrc
:
source ~/.mutt/pass.sh|
set smtp_pass = $my_pass
Run Code Online (Sandbox Code Playgroud)
然后.mutt/pass.sh
包含:
#! /bin/bash
my_pass=$(pass Example/user)
Run Code Online (Sandbox Code Playgroud)
如果我添加echo ${my_pass}
到pass.sh
并在命令行中运行它,它呼应了密码。
当我启动时,系统会mutt-kz
提示我解锁我的pass
gpg 密钥,所以有些东西正在起作用,但是当我尝试从 Mutt 发送邮件时,它会要求我提供 SMTP 密码,如果我不提供它,则消息不会发送:( "SASL 身份验证失败")
那么......我如何正确地将变量从我的 shell 脚本传递到我的.muttrc
?
我向我添加了一个宏.muttrc
,用于切换侧边栏b:
macro index b "<enter-command>toggle sidebar_visible<enter>"
macro pager b "<enter-command>toggle sidebar_visible<enter>"
Run Code Online (Sandbox Code Playgroud)
FWIW,这也有效:
macro index, pager b "<enter-command>toggle sidebar_visible<enter>"
Run Code Online (Sandbox Code Playgroud)
但是在寻呼机中,当我关闭侧边栏时,页面不会重新绘制,直到我返回索引,所以我没有侧边栏,而是一无所有,或者侧边栏只是在顶部弹出消息,隐藏它的 200 像素。有什么我可以添加到这个宏中的东西,当我切换侧边栏时会重新绘制屏幕吗?