跳转至

编程

VSCode 中quick fix快捷键不起作用

VSCode 中有一些语义分析工具可以提供自动修复功能(quick fix),它的默认的快捷键是ctrl+.,但是我重新安装windows系统之后,发现这个快捷键组合不起作用,重装系统之前是可以的,忍了几天以后,还是觉得麻烦,每次都用鼠标点一下。

问了一下gemini,给的答案很模糊,大概意思是快捷键冲突,但是vscode里面搜索这个ctrl+.,发现根本就输入不进去。

几经思考和摸索,才发现是windows自带的输入法占用了这个快捷键,ctrl+. 的默认功能是输入法的切换中英文标点符号。输入法肯定先于vscode处理了这个快捷键,所以vscode中按下这两个键才没有反应。在输入法设置中,将切换中英文标点符号的快捷键关闭即可。

Windows 输入法关闭中英文标点切换的快捷键

2025-07-29 14:12:55

VSCode 集成 VS Dev Command Prompt

  1. 按Ctrl+P打开命令面板,搜索 "Open User Settings (Json)",打开json配置文件
  2. 添加如下代码:
 "terminal.integrated.profiles.windows": {
    "VS Dev Command Prompt": {
      "path": [
        "pwsh.exe"
      ],
      "args": [
        "-NoExit",
        "-Command",
        "& {Import-Module 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\Microsoft.VisualStudio.DevShell.dll'; Enter-VsDevShell bcb9ea00 -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -host_arch=x64'}"
      ],
      "icon": "terminal",
      "env": {}
    }
  },

引号什么的搞了好久,木乱。

2025-07-24 22:45:13

nohup command 2&1 & 的意思

nohup 2>&1 & 是一个在 Unix/Linux 系统中非常常见的命令组合,用于在后台运行一个进程,并且确保它在用户退出终端会话后依然能继续运行。

假设你要运行的命令是 your_command。那么完整的命令就是:

nohup your_command 2>&1 &

我们逐个分析:


1. your_command

这是你想要执行的实际命令。它可以是任何可执行的程序、脚本或一系列命令。

例如: * python your_script.py * java -jar your_app.jar * ./my_program * tail -f /var/log/messages


2. & (Ampersand)

这个符号的作用是将命令放到 后台 (background) 执行。

  • 当你执行 your_command & 时:
    • 命令会立即开始执行,但你不会看到它的输出直接显示在当前终端。
    • 终端会立即返回一个 PID (Process ID) 给你的 shell,然后你就可以继续在当前终端输入其他命令了。
    • 这个进程仍然是当前 shell 的子进程。这意味着,如果你的 shell 关闭(例如,你退出 SSH 会话),默认情况下,这个后台进程会收到一个 SIGHUP 信号,然后被终止。

3. nohup

nohup 是 "no hang up" 的缩写。它的作用是让命令 忽略 SIGHUP 信号

  • 当一个 shell 关闭时(例如,用户注销、SSH 连接断开),它会向其所有子进程发送一个 SIGHUP 信号。
  • 通常,收到 SIGHUP 信号的进程会终止。
  • nohup 命令会阻止它后面跟着的命令在收到 SIGHUP 信号时终止。这意味着,即使你的终端会话结束,该进程也会继续运行。

nohup 的副作用:

  • 标准输出重定向: 如果没有显式地重定向,nohup 会将命令的标准输出 (stdout) 和标准错误 (stderr) 重定向到一个名为 nohup.out 的文件中(在当前目录下)。如果当前目录不可写,它会尝试重定向到 $HOME/nohup.out
  • 标准输入: nohup 不会读取标准输入,所以如果你运行的命令需要用户交互,那它可能无法正常工作。

4. 2>&1

这是一个 重定向操作符。它的含义是:

  • 2: 代表标准错误 (stderr)。在 Unix/Linux 中,文件描述符 0 是标准输入 (stdin),1 是标准输出 (stdout),2 是标准错误 (stderr)。
  • >: 是重定向操作符,将输出发送到指定位置。
  • &1: 表示将 2 (标准错误) 重定向到 1 (标准输出) 所指向的同一个地方。

为什么需要 2>&1

正如上面提到的,nohup 默认会将标准输出重定向到 nohup.out。但是,它不会默认重定向标准错误。

  • 如果没有 2>&1,你的命令的正常输出会进入 nohup.out,但任何错误信息仍然会显示在你的终端上(如果你没有立即关闭终端的话),或者在终端关闭后丢失。
  • 通过 2>&1,你确保了所有(标准输出和标准错误)的输出都汇集到标准输出流,然后一起被 nohup 重定向到 nohup.out 文件中。这样,你就可以在一个地方查看命令的所有日志和错误信息,而不会丢失任何重要的输出。

更灵活的重定向:

你也可以将输出重定向到你指定的文件,而不是默认的 nohup.out

nohup your_command > /path/to/your/log.log 2>&1 &
这会将所有输出(标准输出和标准错误)都写入 /path/to/your/log.log 文件。


总结 nohup 2>&1 & 的作用:

结合起来,nohup your_command 2>&1 & 命令的作用是:

  1. 后台运行 (&)your_command 会立即开始执行,并且将控制权返回给你的终端,你可以继续进行其他操作。
  2. 防止会话终止 (nohup):即使你退出当前的 shell 会话(例如,关闭 SSH 窗口),your_command 也不会收到 SIGHUP 信号而终止,它会继续在服务器上运行。
  3. 统一日志输出 (2>&1)your_command 的所有输出(包括正常的程序输出和任何错误信息)都会被捕获并写入到 nohup.out 文件(或你指定的文件)中,以便后续检查。

这个组合在部署长时间运行的服务、脚本或测试时非常有用,因为它允许你启动任务后安全地断开连接,而不必担心任务中断或丢失日志。

2025-06-25 23:08:53