当我复制一定数量的行并将其粘贴到任何解释器中时,iTerm2 无法粘贴换行符,这给我带来了问题。例如,如果我复制下面的代码并将其粘贴到 R 解释器中,所有行都会折叠起来,并且会出现错误(如果我将字符串粘贴到 Python 解释器中,情况也是如此)。
但是,如果我将字符串粘贴到 bash 中,它确实可以工作;如果我将其粘贴到 Terminal.app 中的解释器中(并pbcopy/pbpaste
正确注册换行符),它也可以工作,因此这一定是 iTerm2 的问题。任何帮助都非常感谢。
gibbs <- function(theta.0, data, burnin=.25*niters, niters=1e3) {
# Sample using Gibbs.
#
# Args:
# theta.0: Starting value.
# data: list with x and y
# burnin: Number of initial samples to throw away.
# niters: Number of desired iterations.
#
# Returns:
# Matrix with (niters-burnin) columns being samples under the target
# distribution.
library(mvtnorm)
# Declare constants.
n <- length(data$y)
X <- cbind(rep(1, length(data$x)), data$x)
# Initialize output.
theta.out <- matrix(rep(NA, (n+2)*(burnin+niters)), nrow=n+2)
# Initialize proposals.
beta.props <- t(rmvnorm(burnin+niters, mean=rep(0,2), sigma=solve(t(X)%*%X)))
z.props <- matrix(abs(rnorm(n*(burnin+niters), mean=0, sd=1)), nrow=n)
z.props[data$y == 0, ] <- -z.props[data$y == 0, ]
# Initialize parameters.
beta.old <- theta.0[1:2]
z.old <- theta.0[3:(n+2)]
for (i in 1:(burnin+niters)) {
beta.new <- solve(t(X)%*%X)%*%t(X)%*%z.old + beta.props[, i]
z.new <- X%*%beta.new + z.props[, i]
# Save the draw.
theta.out[, i] <- c(z.new, beta.new)
beta.old <- beta.new
z.old <- z.new
}
# Remove the burn-in samples.
theta.out[, -(1:burnin)]
}
答案1
iTerm2 将大文本分割成块,然后以较小的延迟发送这些块。发生这种情况是因为 iTerm2 默认延迟非常小。
要修复大文本粘贴问题,您可以使用命令更改块大小和延迟选项defaults
。只需在 iTerm2 中运行以下命令:
defaults write com.googlecode.iterm2 QuickPasteBytesPerCall -int 1024
defaults write com.googlecode.iterm2 QuickPasteDelayBetweenCalls -float 0.08