vim 如何在Ubuntu中安装clang-format?

vtwuwzda  于 2022-11-11  发布在  其他
关注(0)|答案(8)|浏览(1352)

我尝试使用clang-tools特别是clang-format在vim中进行自动代码格式化,但是我用apt-get搜索找不到这个工具。
有没有人经历过这个问题,你有什么建议?

62o28rlo

62o28rlo1#

使用Ubuntu 16.04,只需执行以下操作:

sudo apt install clang-format
e37o9pze

e37o9pze2#

clang格式在ubuntu-precise 12.04中不可用,但在ubuntu-sausy**http://packages.ubuntu.com/saucy/clang-format-3.4中可用。
为了找到这个软件包与apt-cache,我们必须添加以下列表到我们的仓库列表。实际上,以下列表是为新加坡服务器生成的,但如果你想查找自己的国家,你可以使用
http://repogen.simplylinux.ch/generate.php**
生成列表后,您必须将其添加到存储库中,您可以通过查看此处了解如何执行此操作。https://help.ubuntu.com/community/Repositories/CommandLine
软件包列表包括:

deb http://sg.archive.ubuntu.com/ubuntu/ saucy main restricted universe multiverse 

deb-src http://sg.archive.ubuntu.com/ubuntu/ saucy main restricted universe multiverse 

deb http://sg.archive.ubuntu.com/ubuntu/ saucy-security main restricted universe multiverse 

deb http://sg.archive.ubuntu.com/ubuntu/ saucy-updates main restricted universe multiverse 

deb http://sg.archive.ubuntu.com/ubuntu/ saucy-proposed main restricted universe multiverse 

deb http://sg.archive.ubuntu.com/ubuntu/ saucy-backports main restricted universe    multiverse 

deb-src http://sg.archive.ubuntu.com/ubuntu/ saucy-security main restricted universe multiverse 

deb-src http://sg.archive.ubuntu.com/ubuntu/ saucy-updates main restricted universe multiverse 

deb-src http://sg.archive.ubuntu.com/ubuntu/ saucy-proposed main restricted universe multiverse 

deb-src http://sg.archive.ubuntu.com/ubuntu/ saucy-backports main restricted universe multiverse

那么你应该先用下面的命令搜索clang-format
sudo apt缓存搜索clang格式
然后,您可以安装您想要安装的版本,例如;
sudo apt-get安装clang格式-3.3

gk7wooem

gk7wooem3#

现在你可以直接在Debian/Ubuntu中使用apt install clang-format来安装clang-format,但是Debian/Ubuntu提供的clang-format已经很老了,比如:来自Ubuntu 18.04的clang-format的最新版本是v7,但是最新的稳定版本已经达到v12。您可以按照以下步骤安装最新版本的clang-format
步骤1:运行wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
第2步:根据您的操作系统,在/etc/apt/sources.list末尾追加以下内容:

  • Buster(Debian 10):
deb http://apt.llvm.org/buster/ llvm-toolchain-buster main
deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster main

# 11

deb http://apt.llvm.org/buster/ llvm-toolchain-buster-11 main
deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-11 main

# 12

deb http://apt.llvm.org/buster/ llvm-toolchain-buster-12 main
deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-12 main
  • 靶心(Debian 11):
deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main
deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main

# 11

deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-11 main
deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-11 main

# 12

deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-12 main
deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-12 main
  • Xenial(Ubuntu 16.04):
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial main

# 11

deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 main

# 12

deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-12 main
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-12 main
  • 仿生学(Ubuntu 18.04):
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main

# 11

deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main

# 12

deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main
  • 焦点(Ubuntu 20.04)
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main

# 14

deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main

# 15

deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main
  • (Ubuntu 22.04版)
deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy main

# 14

deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main

# 15

deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main
deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main

如果您的操作系统不在此列表中,则可以选中https://apt.llvm.org/
步骤3:运行sudo apt update
步骤4:运行apt search clang-format并检查所有可用版本:

$ sudo apt search clang-format
Sorting... Done
Full Text Search... Done
arcanist-clang-format-linter/stable 0.git20161021-2 all
  clang-format linter for Arcanist

clang-format/unknown 1:13.0-53~20210202214848.38 amd64
  Tool to format C/C++/Obj-C code

clang-format-11/unknown 1:11.1.0~++20210203115409+1fdec59bffc1-1~exp1~20210203230038.161 amd64
  Tool to format C/C++/Obj-C code

clang-format-12/unknown 1:12.0.0~++20210312110334+ca14f0282fce-1~exp1~20210312221110.59 amd64
  Tool to format C/C++/Obj-C code

clang-format-13/unknown 1:13~++20210315063844+b868a3edad9d-1~exp1~20210315174553.2286 amd64
  Tool to format C/C++/Obj-C code

clang-format-6.0/stable 1:6.0.1-10 amd64
  Tool to format C/C++/Obj-C code

clang-format-7/stable 1:7.0.1-8+deb10u2 amd64
  Tool to format C/C++/Obj-C code

第五步:使用apt install安装您想要的clang-format。然后您可以使用--version检查已安装的clang-format。您可以在同一个环境中安装多个版本的clang-format

$ sudo apt install -y clang-format-12
$ clang-format-12 --version
Ubuntu clang-format version 12.0.0-++20210312110334+ca14f0282fce-1~exp1~20210312221110.59

$ sudo apt install -y clang-format
$ clang-format --version
Ubuntu clang-format version 13.0.0-++20210315063844+b868a3edad9d-1~exp1~20210315174553.2286
g6baxovj

g6baxovj4#

  • 此答案自投票失败后已被改写,是截至2022年4月该问题的最新答案。它也是唯一解释如何直接从LLVM(clang-format的制造商)获得最新版本的答案。*

安装最新版本的clang-formatgit-clang-format(可作为git clang-format运行):

摘要

1.要在Ubuntu中安装clang-format,你可以使用sudo apt install clang-format,或者它的一些变体(见下文),但是它经常安装一个非常旧的版本,缺少大量的功能。
1.[首选]要在Ubuntu中安装 * 最新版本 * 的clang-format,您必须直接从the official release pages on GitHub获得它。我将在下面详细解释如何执行此操作。

[旧方法]安装旧版本的clang-format

应执行:

sudo apt update

然后按以下顺序一次一个地尝试,直到有一个成功:

sudo apt install clang-format
sudo apt install clang-format-14.0
sudo apt install clang-format-13.0
sudo apt install clang-format-12.0
sudo apt install clang-format-11.0
sudo apt install clang-format-10.0
sudo apt install clang-format-9.0
sudo apt install clang-format-8.0
sudo apt install clang-format-7.0
sudo apt install clang-format-6.0
sudo apt install clang-format-5.0
sudo apt install clang-format-4.0
sudo apt install clang-format-3.6
sudo apt install clang-format-3.4
sudo apt install clang-format-3.0

例如,在Ubuntu 14.04上,上面的第一个有效的命令是sudo apt install clang-format-3.6。我相信,在Ubuntu 16.04上,sudo apt install clang-format是有效的,但无论你使用的是哪个版本的Ubuntu,包括Ubuntu 20.04,sudo apt install clang-format安装的都是一个相当过时的版本(例如:Ubuntu 18.04上的6.0.0版本)。所以,要获得最新版本的clang-format,请继续阅读。

[* 首选方法 *]如何在Ubuntu上安装 * 最新 * 版本的clang-format

获取最新版本的超级快速说明

从LLVM获取clang-formatgit-clang-format(制作clang C和C++编译器以及那些工具的父组织)直接,按照我下面的进一步说明操作。但是,这需要下载整个压缩的clang编译器工具集版本,大小为~600 MB,并将其解压缩到一个文件夹中,完全解压缩后大小为~5 GB,这样你就可以复制出这些可执行文件的 * 几兆字节 。这需要一些时间。
因此,如果您非常匆忙,
并且 * 如果您希望信任我的个人存储库中的可执行文件,我在存储库的bin目录中保存了clang-formatgit-clang-format的最新版本(14.0.0或更高版本),如下所示:https://github.com/ElectricRCAircraftGuy/eRCaGuy_CodeFormatter/tree/main/bin。但是,通常不建议信任其他人的可执行文件,因此我在下面提供了从LLVM(clang-format的制造商)的原始发行版中提取这些可执行文件的 * 确切 * 方法和说明,如果您愿意,可以自己按照这些方法和说明操作。

如果您想从我的个人存储库快速下载并安装clang-formatgit-clang-format,请执行以下操作:

wget https://github.com/ElectricRCAircraftGuy/eRCaGuy_CodeFormatter/raw/main/bin/clang-format
wget https://github.com/ElectricRCAircraftGuy/eRCaGuy_CodeFormatter/raw/main/bin/git-clang-format
chmod +x clang-format git-clang-format
mkdir -p ~/bin
mv clang-format ~/bin
mv git-clang-format ~/bin

# log out of Ubuntu and log back in

# ensure it worked and you now have a later version

clang-format --version  

# Check the help menus

clang-format -h
git clang-format -h

# OR (same thing as the line just above):

git-clang-format -h

直接从LLVM(制造商)获取 * 最新 * 版本 * 的完整说明:*

这需要下载整个LLVM clang C和C++编译器工具集,这是一个压缩文件,大小约为600 MB,然后将其解压缩到一个文件夹中,解压缩后大小约为5 GB,这样您就可以从其中复制出几MB的可执行文件。

  • 这些说明最初发布在我的eRCaGuy_CodeFormatter存储库的README中,网址为:https://github.com/ElectricRCAircraftGuy/eRCaGuy_CodeFormatter#installation-instructions*
    从最新的官方LLVM版本获取最新clang-formatgit-clang-format的完整步骤:

1.访问LLVM官方clang发布页面:https://github.com/llvm/llvm-project/releases
1.查找适用于您的操作系统的最新二进制版本。例如:对于64位Linux,目前(截至2022年3月):下载链接是:https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
1.使用上面找到的链接获取下面的命令:

url="https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"

# download it; be patient: the file is ~600 MB

wget "$url"

# extract it; be patient: this could take several minutes, as the file is

# about 5 GB when extracted! On my high-speed computer with SSD, it took

# ~1 minute

time tar xf clang+llvm*.tar.xz

# cd into the bin dir

cd clang+llvm*/bin

# make a ~/bin dir if it doesn't exist yet

mkdir -p ~/bin

# copy out `clang-format` into your ~/bin dir

cp clang-format ~/bin

# copy out `git-clang-format` into your ~/bin dir

cp git-clang-format ~/bin

# Manually edit your ~/.profile file to ensure it contains the following in

# order to ensure ~/bin is part of your executable PATH variable. This is

# part of your default Ubuntu ~/.profile file (for which you have a backup

# copy in /etc/skel/.profile):

# 

# # set PATH so it includes user's private bin if it exists

# if [ -d "$HOME/bin" ] ; then

# PATH="$HOME/bin:$PATH"

# fi

# Now, if this is your first time creating and using the ~/bin dir, log out

# of Ubuntu and log back in.

# check your clang-format version to ensure it shows the version you just

# installed

clang-format --version

# Ensure it is found in your ~/bin dir; my output to this command is:

# `/home/gabriel/bin/clang-format`

which clang-format

# Check `git-clang-format` too

which git-clang-format

# Check the help menus

clang-format -h
git clang-format -h

# OR (same thing as the line just above):

git-clang-format -h

# manually delete the the extracted folder if desired, and the

# downloaded *.tar.xz file as well, if desired

请注意,git有一个非常简洁的特性,它可以使路径中以git-开头的 * 任何 * 可执行文件自动被视为git命令。每当运行git some_command时,git都会自动搜索系统中所有的PATH变量,以查找名为git-some_command的可执行文件。如果存在,git运行它。因此,仅仅由于您将一个可执行文件放在名为git-clang-format的路径中,git就允许您以git clang-format的形式运行它(git后面没有破折号)。当然,您也可以选择以git-clang-format的形式运行同一个可执行文件,因为它的文件名就是git-clang-format
有关推荐的git clang-format使用方法和工作流程,请参见下文。

其他安装和使用信息及资源:

1.如果您按照上面的步骤操作,您现在就拥有了clang-format * 和 * git-clang-format的最新版本。拥有后者后,您可以将git clang-format作为git命令运行,以便在您将文件提交到git之前自动格式化它们。git-clang-format是由LLVM编写的Python脚本,clang C和C++编译器和clang-format的制造商。它位于官方LLVM GitHub资源库中,网址为:https://github.com/llvm/llvm-project/blob/main/clang/tools/clang-format/git-clang-format。将其放入PATH中;例如:在名为~/bin/git-clang-format的文件中,并将此文件标记为可执行文件(chmod +x ~/bin/git-clang-format)。
1.调用和使用此git-clang-format自动格式化程序的推荐git工作流如下:


# See what git changes you have

git difftool  

# OR: `git diff` if you haven't configured a difftool such as meld

git diff

# Add (stage) a C or C++ file to be committed

git add my_changed_file.c 

# Run `git-clang-format` to have `clang-format` check and

# auto-format**just your changed lines**. (This runs the

# `~/bin/git-clang-format` Python script).

git clang-format

# See what changes `clang-format` just made to your changed lines

git difftool

# OR

git diff

# Add (stage) this file again since it's been changed by

# `git-clang-format`

git add my_changed_file.c 

# commit the changed file

git commit

1.其他可能有用的信息:

  1. git-clang-format python脚本设置说明:https://dx13.co.uk/articles/2015/4/3/Setting-up-git-clang-format.html
  2. git clang-format使用和工作流程说明:https://electronjs.org/docs/development/clang-format
  3. 2020年4月更新:我刚刚在GitHub上的一个项目上启动并运行了clang-format。方法如下:

1.我在这里写了一些说明:https://github.com/AmboVent-1690-108/AmboVent#setup
1.下面是我添加所有内容的PR:https://github.com/AmboVent-1690-108/AmboVent/pull/39。你可以看看我是怎么做到的。
1.我借用了我的笔记和文件,我在我的dotfiles项目在这里:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/tree/master/clang-format

  1. 2022年4月更新:我现在也有这样的回购协议:https://github.com/ElectricRCAircraftGuy/eRCaGuy_CodeFormatter
9o685dep

9o685dep5#

pip3 install clang-format在ubuntu18.04上给了我最新的9.0版本,没有任何配置

js5cn81o

js5cn81o6#

只需使用下面的命令:

sudo apt-get install clang-format

它可以在ubuntu16.04中运行(安装设置clang-format-3.8(1:3.8- 2ubuntu 4))
当我尝试

sudo apt-cache search clang-format

# it return

clang-format - Tool to format C/C++/Obj-C code
clang-format-3.5 - Tool to format C/C++/Obj-C code
clang-format-3.6 - Tool to format C/C++/Obj-C code
clang-format-3.7 - Tool to format C/C++/Obj-C code
clang-format-3.8 - Tool to format C/C++/Obj-C code
clang-format-3.9 - Tool to format C/C++/Obj-C code
clang-format-4.0 - Tool to format C/C++/Obj-C code
clang-format-5.0 - Tool to format C/C++/Obj-C code
clang-format-6.0 - Tool to format C/C++/Obj-C code
clang-format-8 - Tool to format C/C++/Obj-C code

那就试试

sudo apt-get install clang-format-8

ENV中没有命令clang-format

oknwwptz

oknwwptz7#

这是一个更新,因为我在Ubuntu 21.04上遇到了上面建议的问题
sudo apt install clang-format安装v.12,我需要任何旧的。
sudo apt install clang-format-9.0无法工作。(“找不到软件包”)
这样做效果很好:sudo apt install clang-format-9

avkwfej4

avkwfej48#

你可以做

python3 -m pip install --user clang-format

这将从https://pypi.org/project/clang-format/安装一个预编译的二进制文件。如果你没有sudo访问权限,或者你需要一个预提交钩子的clang-format,这是非常实用的。

相关问题